这个是检查头文件判断类型的
<% Rem Designer:ZMM
If Request.ServerVariables("REQUEST_METHOD")="POST" Then
Function GetByteString(str)
For i=1 To Len(str)
GetByteString = GetByteString & ChrB(Asc(Mid(str, i, 1)))
Next
End Function
Dim vbCRLFbyte, i, formLength, formContent, formStream, pathStart, pathEnd, pathLength, pathContent, formText, fileStart, fileEnd, fileLength, regEx, Matches, contentType, fileType, fileExtension, fileName, fileStreamGet, fileStreamPut
Const adTypeBinary = 1
Const adTypeText = 2
vbCRLFbyte = GetByteString(vbCRLF & vbCRLF)
formLength = Request.TotalBytes
formContent = Request.BinaryRead(formLength)
Set formStream = Server.CreateObject("ADODB.Stream")
formStream.Type = adTypeText
formStream.Mode = 3
formStream.Open
formStream.WriteText formContent
formStream.Position = 0
formStream.CharSet = "GB2312"
formText = formStream.ReadText
formStream.Close
Set formStream = Nothing
Rem 获取文件头
Set regEx = New RegExp
regEx.Pattern = "\sContent-Type:\s+(.*?)\s"
regEx.Global = True
regEx.IgnoreCase = True
Set Matches = regEx.Execute(formText)
Set regEx = Nothing
contentType = Replace(Mid(Matches(0).Value, 1, Len(Matches(0).Value) - 1), "Content-Type: ", "")
fileType = Split(contentType, "/", -1, 1)(1)
pathStart = InStr(1, formText, "filename=" & Chr(34)) + 10
pathEnd = InStr(pathStart, formText, Chr(34))
pathLength = pathEnd - pathStart
pathContent = Mid(formText, pathStart, pathLength)
Set regEx = New RegExp
regEx.Pattern = "^.*(\.[^\.]*)$"
regEx.Global = False
regEx.IgnoreCase = True
fileExtension = regEx.Replace(pathContent, "$1")
Set regEx = Nothing
fileName = Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now) & Second(Now) & fileExtension
If InStr(1, "|GIF|PJPEG|X-PNG|BMP|", "|" & Ucase(fileType) & "|")>0 Then
fileStart = InStrB(1, formContent, vbCRLFbyte) + 3
fileEnd = formLength - 48
fileLength = fileEnd - fileStart + 1
Set fileStreamGet = Server.CreateObject("ADODB.Stream")
fileStreamGet.Type = adTypeBinary
fileStreamGet.Mode = 3
fileStreamGet.Open
fileStreamGet.Write formContent
fileStreamGet.Position = fileStart
Set fileStreamPut = Server.CreateObject("ADODB.Stream")
fileStreamPut.Type = adTypeBinary
fileStreamPut.Mode = 3
fileStreamPut.Open
fileStreamPut.Write fileStreamGet.Read(fileLength)
fileStreamPut.SaveToFile(Server.MapPath(fileName))
fileStreamGet.Close
Set fileStreamGet = Nothing
fileStreamPut.Close
Set fileStreamPut = Nothing
Response.Write "<script language=""javascript""> window.alert('文件上传成功!'); window.location.replace('" & Request.ServerVariables("SCRIPT_NAME") & "'); </script>"
Else
Response.write "filetype=" & filetype
Response.Write "<script language=""javascript""> window.alert('不允许上传此类型文件,上传失败!'); window.location.replace('" & Request.ServerVariables("SCRIPT_NAME") & "'); </script>"
End If
End If %>
<html>
<head>
<title>上传文件</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post" enctype="multipart/form-data" onsubmit="return (oFile.value!='');">
<input type="file" name="oFile" onkeydown="return false;" oncontextmenu="return false;" onpaste="return false;" ondragenter="return false;">
<input type="submit" value="上传文件">
</form>
</body>
</html>