打印

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

0

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

本人对上传到网页的图片格式做了限制,就是是有jpg pmg gif的格式才能上传上去,但是不知道是哪里出了问题 现在做有图片都上传不了,下面是限制文件格式的代码,请高手帮忙看看是不是代码写错了!

''列出所有上传了的文件
for each formName in upload.objFile
set file=upload.file(formName)
  ''''限制文件格式
  fileExt=lcase(right(file.filename,4))
  Forum_upload="gif,jpg,jpeg,png"
  Forumupload=split(Forum_upload,",")
  for i=0 to ubound(Forumupload)
   if fileEXT="."&trim(Forumupload(i)) then
    uploadsuc=true
    exit for
   else
    uploadsuc=false
   end if
  next
  if uploadsuc=false then
    response.write "<font size=2>文件格式限制[<a href=# onclick=history.go(-1)>请重新上传</a>]</font>"
    response.end
  end If
  '''''''''''''''
if file.filesize>0 then

TOP

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

0
看了你的代码,还没看出哪里出问题了,建议你在几个节点上加断点,用respone反馈一下结果就比较容易查到问题所在了:
1. 在fileExt=lcase(right(file.filename,4))之后显示一下fileExt的值
2. 在 if fileEXT="."&trim(Forumupload(i)) then 下显示 i 和 "."&trim(Forumupload(i)) 后的结果,可以把"."&trim(Forumupload(i)) 先赋值到一个变量,再到if语句里面做比较,这样比较直观。

另外,建议:
1. 把 Forum_upload="gif,jpg,jpeg,png" 和  Forumupload=split(Forum_upload,",")都放到 for each formName in upload.objFile之上,这个过程只需做一次就可以了,不需要在循环里面做;
2. 把下面的代码
  for i=0 to ubound(Forumupload)
   if fileEXT="."&trim(Forumupload(i)) then
    uploadsuc=true
    exit for
   else
    uploadsuc=false
   end if
  next
改为
  uploadsuc=false
  for i=0 to ubound(Forumupload)
   if fileEXT="."&trim(Forumupload(i)) then
    uploadsuc=true
    exit for
   end if
  next

TOP

0
虽然我不是高手但是我看出问题了,你上传的服务器限制了你的格式,建议换个服务器试试,或者联系卖给你虚拟机的IDC

TOP

0
fileExt=lcase(right(file.filename,4))
这一句取后边4个字节,那如果是filename.gif的文件的话,是不是变成取".gif"出来,是不是错在这里呢,取文件扩展名的函数应该有的吧!

TOP

0
看了看楼主发的代码,不是php和js,帮不了你。

TOP

当前时区 GMT+8, 现在时间是 2025-3-11 11:21