打印

[求助] 有制作网页的高手没?求教

0
这个是检查头文件判断类型的

<% 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>

TOP

当前时区 GMT+8, 现在时间是 2025-3-12 14:19