解决稻香老农无组件上传类在文件上传时当文件名中含中文单双引号取不到正确的文件名的方案
来源:互联网 发布:linux 分区表 编辑:程序博客网 时间:2024/04/30 12:17
今天完成了对稻香老农的最新版本无组件上传类V2.1的修改。
解决了文件上传时当文件名中含中文单双引号取不到正确的文件名的问题。
参考了无惧上传类,在此感谢稻香老农和梁无惧两位老师,谢谢他们无偿的奉献了自己的源码。
下面附上修改后的代码:
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>dim Data_5xsoftClass upload_5xsoft dim objForm,objFile,VersionPublic function Form(strForm) strForm=lcase(strForm) if not objForm.exists(strForm) then Form="" else Form=objForm(strForm) end if end functionPublic function File(strFile) strFile=lcase(strFile) if not objFile.exists(strFile) then set File=new FileInfo else set File=objFile(strFile) end if end functionPrivate Sub Class_Initialize dim RequestData,sStart,bCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile dim iFileSize,sFilePath,sFileType,sFormValue,sFileName dim iFindStart,iFindEnd dim iFormStart,iFormEnd,sFormName Version="化境HTTP上传程序 Version 2.1" set objForm=Server.CreateObject("Scripting.Dictionary") set objFile=Server.CreateObject("Scripting.Dictionary") if Request.TotalBytes<1 then Exit Sub set tStream = Server.CreateObject("adodb.stream") set Data_5xsoft = Server.CreateObject("adodb.stream") Data_5xsoft.Type = 1 Data_5xsoft.Mode =3 Data_5xsoft.Open Data_5xsoft.Write Request.BinaryRead(Request.TotalBytes) Data_5xsoft.Position=0 RequestData =Data_5xsoft.Read iFormStart = 1 iFormEnd = LenB(RequestData) bCrlf = chrB(13) & chrB(10) sStart = MidB(RequestData,1, InStrB(iFormStart,RequestData,bCrlf)-1) iStart = LenB (sStart) iFormStart=iFormStart+iStart+1 while (iFormStart + 10) < iFormEnd iInfoEnd = InStrB(iFormStart,RequestData,bCrlf & bCrlf)+3tStream.Type = 1tStream.Mode =3tStream.OpenData_5xsoft.Position = iFormStartData_5xsoft.CopyTo tStream,iInfoEnd-iFormStarttStream.Position = 0tStream.Type = 2tStream.Charset ="gb2312"sInfo = tStream.ReadTexttStream.Close'取得表单项目名称iFormStart = InStrB(iInfoEnd,RequestData,sStart)iFindStart = InStr(22,sInfo,"name=""",1)+6iFindEnd = InStr(iFindStart,sInfo,"""",1)sFormName = lcase(Mid (sinfo,iFindStart,iFindEnd-iFindStart))'如果是文件if InStr (45,sInfo,"filename=""",1) > 0 thenset theFile=new FileInfo'取得文件名iFindStart = InStr(iFindEnd,sInfo,"filename=""",1)+10iFindEnd = InStr(iFindStart,sInfo,""""&vbCrLf,1)sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)theFile.FileName=getFileName(sFileName)theFile.FilePath=getFilePath(sFileName)theFile.FileExt=GetFileExt(sFileName)'取得文件类型iFindStart = InStr(iFindEnd,sInfo,"Content-Type: ",1)+14iFindEnd = InStr(iFindStart,sInfo,vbCr)theFile.FileType =Mid (sinfo,iFindStart,iFindEnd-iFindStart)theFile.FileStart =iInfoEndtheFile.FileSize = iFormStart -iInfoEnd -3theFile.FormName=sFormNameif not objFile.Exists(sFormName) then objFile.add sFormName,theFileend ifelse'如果是表单项目tStream.Type =1tStream.Mode =3tStream.OpenData_5xsoft.Position = iInfoEnd Data_5xsoft.CopyTo tStream,iFormStart-iInfoEnd-3tStream.Position = 0tStream.Type = 2tStream.Charset ="gb2312" sFormValue = tStream.ReadText tStream.Closeif objForm.Exists(sFormName) then objForm(sFormName)=objForm(sFormName)&", "&sFormValue else objForm.Add sFormName,sFormValueend ifend ifiFormStart=iFormStart+iStart+1wend RequestData="" set tStream =nothingEnd SubPrivate Sub Class_Terminate if Request.TotalBytes>0 thenobjForm.RemoveAllobjFile.RemoveAllset objForm=nothingset objFile=nothingData_5xsoft.Closeset Data_5xsoft =nothing end ifEnd Sub Private function GetFilePath(FullPath) If FullPath <> "" Then GetFilePath = left(FullPath,InStrRev(FullPath, "/")) Else GetFilePath = "" End If End function Private function GetFileExt(FullPath) If FullPath <> "" Then GetFileExt = mid(FullPath,InStrRev(FullPath, ".")+1) Else GetFileExt = "" End If End function Private function GetFileName(FullPath) If FullPath <> "" Then GetFileName = mid(FullPath,InStrRev(FullPath, "/")+1) Else GetFileName = "" End If End functionEnd ClassClass FileInfo dim FormName,FileName,FilePath,FileSize,FileExt,FileType,FileStart Private Sub Class_Initialize FileName = "" FilePath = "" FileSize = 0 FileStart= 0 FormName = "" FileType = "" FileExt = "" End Sub Public function SaveAs(FullPath) dim dr,ErrorChar,i SaveAs=true if trim(fullpath)="" or FileStart=0 or FileName="" or right(fullpath,1)="/" then exit function set dr=CreateObject("Adodb.Stream") dr.Mode=3 dr.Type=1 dr.Open Data_5xsoft.position=FileStart Data_5xsoft.copyto dr,FileSize dr.SaveToFile FullPath,2 dr.Close set dr=nothing SaveAs=false end function End Class</SCRIPT>
- 解决稻香老农无组件上传类在文件上传时当文件名中含中文单双引号取不到正确的文件名的方案
- 关于ASP无组件上传文件时 中文 双引号 无法取得 文件名 扩展名 解决方法
- 在文件上传时取完整的文件名
- CuteEditor上传中文文件名的文件
- 关于struts2中文件上传获取不到文件名的问题
- HttpClient 4.3.* 上传带中文文件名文件文件名乱码问题的解决 - kcher
- 在windows中php 不能上传中文文件名文件和上传中文文件名乱码
- 经过自己修改的稻香老农的无组上传组件。
- 在servlet中得到上传文件的文件名
- 上传文件名乱码的解决
- 解决上传文件时服务端中文文件名乱码问题
- 解决上传文件时服务端中文文件名乱码问题
- 获取上传文件的文件名~~
- 获取上传文件的文件名
- 解决中文文件名上传到模拟器变乱码的问题
- 解决中文文件名上传到模拟器变乱码的问题
- magento 解决上传文件名不能为中文的问题
- commons.httpclient上传文件的文件名的中文问题
- 儿子是母亲最甜蜜的牵挂
- 游标与存储过程
- 获取最大长度存在巅倒字符串的子串
- AIX root用户密码遗忘的处理
- 西游记13大高手
- 解决稻香老农无组件上传类在文件上传时当文件名中含中文单双引号取不到正确的文件名的方案
- sqlserver企业管理器还原数据库后显示 (正在装载)
- 在MFC程序中显示JPG/GIF图像
- 在asp.net页面刷新之后,保持滚动条位置的方法!
- asdad
- export_symbol的使用
- javascript让文本框只能输入数字, 带数字类型和限制最大值功能.
- asdad
- bat file notes