當前位置:編程學習大全網 - 編程語言 - asp如何實現無組件上傳

asp如何實現無組件上傳

用無組件上傳類呀

<%

'----------------------------------------------------------------------

'轉發時請保留此聲明信息,這段聲明不並會影響妳的速度!

'******************* 無組件上傳類 ********************************

'修改者:梁無懼

'電子郵件:yjlrb@21cn.com

'網站:.com

'原作者:稻香老農

'原作者網站:

'聲明:此上傳類是在化境編程界發布的無組件上傳類的基礎上修改的.

'在與化境編程界無組件上傳類相比,速度快了將近50倍,當上傳4M大小的文件時

'服務器只需要10秒就可以處理完,是目前最快的無組件上傳程序,當前版本為0.96

'源代碼公開,免費使用,對於商業用途,請與作者聯系

'文件屬性:例如上傳文件為c:\myfile\doc.txt

'FileName 文件名 字符串 "doc.txt"

'FileSize 文件大小 數值 1210

'FileType 文件類型 字符串 "text/plain"

'FileExt 文件擴展名 字符串 "txt"

'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,Version

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

'代碼開始

Version="無組件上傳類 Version 0.96"

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)

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

RequestBinDate=""

set tStream = nothing

End Sub

Private Sub Class_Terminate

'清除變量及對像

if not Request.TotalBytes<1 then

oUpFileStream.Close

set oUpFileStream =nothing

end if

Form.RemoveAll

File.RemoveAll

set Form=nothing

set File=nothing

End Sub

'取得文件路徑

Private function GetFilePath(FullPath)

If FullPath <> "" Then

GetFilePath = left(FullPath,InStrRev(FullPath, "\"))

Else

GetFilePath = ""

End If

End function

'取得文件名

Private function GetFileName(FullPath)

If FullPath <> "" Then

GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)

Else

GetFileName = ""

End If

End function

'取得擴展名

Private function GetFileExt(FullPath)

If FullPath <> "" Then

GetFileExt = mid(FullPath,InStrRev(FullPath, ".")+1)

Else

GetFileExt = ""

End If

End function

End Class

'文件屬性類

Class FileInfo

dim FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt

Private Sub Class_Initialize

FileName = ""

FilePath = ""

FileSize = 0

FileStart= 0

FormName = ""

FileType = ""

FileExt = ""

End Sub

'保存文件方法

Public function SaveToFile(FullPath)

dim oFileStream,ErrorChar,i

SaveToFile=1

if trim(fullpath)="" or right(fullpath,1)="/" then exit function

set oFileStream=CreateObject("Adodb.Stream")

oFileStream.Type=1

oFileStream.Mode=3

oFileStream.Open

oUpFileStream.position=FileStart

oUpFileStream.copyto oFileStream,FileSize

oFileStream.SaveToFile FullPath,2

oFileStream.Close

set oFileStream=nothing

SaveToFile=0

end function

End Class

%>

  • 上一篇:丟鑰匙的民間預兆
  • 下一篇:什麽是生物菌肥,如何施用?
  • copyright 2024編程學習大全網