有关ASP无组件上传?
<% 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
'*********************************GetByteString这个函数的作用是什么?CHRB这个是不是内置函数,拿来干什么的,是不是跟CHR一样的?**************
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: ", "")
'contentType="text/plain"
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
'****************************这里为什么要+3,inStrB是什么函数,手册时都查不到,这一句是什么意思,能否具体地说说!****************
fileEnd = formLength - 48
'****************************这里为什么要-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) '读取文件内容到另一个Stream对象中
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 "<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>
高手帮我看看带*号的注释,那些是问题,能否帮我解答,很急!