| 
	'----------------------------------------------------------------------'轉發時請保留此聲明信息,這段聲明并不會影響你的速度!
 '******************* 無組件上傳類 ********************************
 '最后修改者:塞北的雪
 'blog:http://blog.csdn.net
 '電子郵件:northsnow@163.com
 '聲明:此代碼是在梁無懼代碼基礎上修改的,沒有更改代碼內核,只是增加了一個屬性 smallFileName
 '之所以發這篇文章,是想告訴大家,在使用高手一寫好的代碼的時候,不要僅局限于別人提供的現有的功能,
 '而應該在他人提供的已有的功能的基礎上,根據自己的需求進行擴改。以達到自己最滿意的需求。
 '修改者:梁無懼
 '電子郵件:yjlrb@21cn.com
 '網站:http://www.25cn.com
 '原作者:稻香老農
 '原作者網站:http://www.5xsoft.com
 '聲明:此上傳類是在化境編程界發布的無組件上傳類的基礎上修改的.
 '在與化境編程界無組件上傳類相比,速度快了將近50倍,當上傳4M大小的文件時
 '服務器只需要10秒就可以處理完,是目前最快的無組件上傳程序,當前版本為0.96
 '源代碼公開,免費使用,對于商業用途,請與作者聯系
 '文件屬性:例如上傳文件為c:\myfile\doc.txt
 'FileName 文件名 字符串 "doc.txt"
 'FileSize 文件大小 數值 1210
 'FileType 文件類型 字符串 "text/plain"
 'FileExt 文件擴展名 字符串 "txt"
 'smallFileName 去掉了擴展名的文件名 "doc"
 'FilePath 文件原路徑 字符串 "c:\myfile"
 '使用時注意事項:
 '由于Scripting.Dictionary區分大小寫,所以在網頁及ASP頁的項目名都要相同的大小
 '寫,如果人習慣用大寫或小寫,為了防止出錯的話,可以把
 'sFormName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
 '改為
 '(小寫者)sFormName = LCase(Mid (sinfo,iFindStart,iFindEnd-iFindStart))
 '(大寫者)sFormName = UCase(Mid (sinfo,iFindStart,iFindEnd-iFindStart))
 '**********************************************************************
 '----------------------------------------------------------------------
 dim oUpFileStream
 
	Class upload_file
 dim Form,File
 
 Private Sub Class_Initialize
 '定義變量
 dim RequestBinDate,sStart,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
 dim iFileSize,sFilePath,sFileType,sFormvalue,sFileName
 dim iFindStart,iFindEnd
 dim iFormStart,iFormEnd,sFormName
 '代碼開始
 set Form = Server.CreateObject("Scripting.Dictionary")
 set File = Server.CreateObject("Scripting.Dictionary")
 if Request.TotalBytes < 1 then Exit Sub
 set tStream = Server.CreateObject("adodb.stream")
 set oUpFileStream = Server.CreateObject("adodb.stream")
 oUpFileStream.Type = 1
 oUpFileStream.Mode = 3
 oUpFileStream.Open
 oUpFileStream.Write Request.BinaryRead(Request.TotalBytes)
 oUpFileStream.Position=0
 RequestBinDate = oUpFileStream.Read
 iFormEnd = oUpFileStream.Size
 bCrLf = chrB(13) & chrB(10)
 '取得每個項目之間的分隔符
 sStart = MidB(RequestBinDate,1, InStrB(1,RequestBinDate,bCrLf)-1)
 iStart = LenB (sStart)
 iFormStart = iStart 2
 '分解項目
 Do
 iInfoEnd = InStrB(iFormStart,RequestBinDate,bCrLf & bCrLf) 3
 tStream.Type = 1
 tStream.Mode = 3
 tStream.Open
 oUpFileStream.Position = iFormStart
 oUpFileStream.CopyTo tStream,iInfoEnd-iFormStart
 tStream.Position = 0
 tStream.Type = 2
 tStream.Charset ="gb2312"
 sInfo = tStream.ReadText
 '取得表單項目名稱
 iFormStart = InStrB(iInfoEnd,RequestBinDate,sStart)-1
 iFindStart = InStr(22,sInfo,"name=""",1) 6
 iFindEnd = InStr(iFindStart,sInfo,"""",1)
 sFormName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
 '如果是文件
 if InStr (45,sInfo,"filename=""",1) > 0 then
 set oFileInfo= new FileInfo
 '取得文件屬性
 iFindStart = InStr(iFindEnd,sInfo,"filename=""",1) 10
 iFindEnd = InStr(iFindStart,sInfo,"""",1)
 sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
 oFileInfo.FileName = GetFileName(sFileName)
 oFileInfo.FilePath = GetFilePath(sFileName)
 'oFileInfo.FileExt = GetFileExt(sFileName) '----劉金才修改
 oFileInfo.FileExt = GetFileExt(oFileInfo.FileName) '----劉金才添加
 oFileInfo.smallFileName = getSmallFileName(oFileInfo.FileName) '----劉金才添加
 iFindStart = InStr(iFindEnd,sInfo,"Content-Type: ",1) 14
 iFindEnd = InStr(iFindStart,sInfo,vbCr)
 oFileInfo.FileType = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
 oFileInfo.FileStart = iInfoEnd
 oFileInfo.FileSize = iFormStart -iInfoEnd -2
 oFileInfo.FormName = sFormName
 file.add sFormName,oFileInfo
 else
 '如果是表單項目
 tStream.Close
 tStream.Type = 1
 tStream.Mode = 3
 tStream.Open
 oUpFileStream.Position = iInfoEnd
 oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2
 tStream.Position = 0
 tStream.Type = 2
 tStream.Charset = "gb2312"
 sFormvalue = tStream.ReadText
 form.Add sFormName,sFormvalue
 end if
 tStream.Close
 iFormStart = iFormStart iStart 2
 '如果到文件尾了就退出
 loop until (iFormStart 2) = iFormEnd
 
	 
 
	特別注意:本站所有轉載文章言論不代表本站觀點,本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系,版權歸原作者所有。
 本站文章均來自網絡,如有侵權,請聯系0371-55621053 QQ: 1342277422 我們將立即刪除!
 本文出自:億恩科技【www.endtimedelusion.com】
 
 
		服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM] |