|
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT> |
|
dim Data_5xsoft |
|
|
|
Class upload_5xsoft |
|
|
|
dim objForm,objFile,Version |
|
|
|
Public function Form(strForm) |
|
strForm=lcase(strForm) |
|
if not objForm.exists(strForm) then |
|
Form="" |
|
else |
|
Form=objForm(strForm) |
|
end if |
|
end function |
|
|
|
Public function File(strFile) |
|
strFile=lcase(strFile) |
|
if not objFile.exists(strFile) then |
|
set File=new FileInfo |
|
else |
|
set File=objFile(strFile) |
|
end if |
|
end function |
|
|
|
|
|
Private Sub Class_Initialize |
|
dim RequestData,sStart,vbCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile |
|
dim iFileSize,sFilePath,sFileType,sFormValue,sFileName |
|
dim iFindStart,iFindEnd |
|
dim iFormStart,iFormEnd,sFormName |
|
Version=" 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) |
|
vbCrlf = chrB(13) & chrB(10) |
|
sStart = MidB(RequestData,1, InStrB(iFormStart,RequestData,vbCrlf)-1) |
|
iStart = LenB (sStart) |
|
iFormStart=iFormStart+iStart+1 |
|
while (iFormStart + 10) < iFormEnd |
|
iInfoEnd = InStrB(iFormStart,RequestData,vbCrlf & vbCrlf)+3 |
|
tStream.Type = 1 |
|
tStream.Mode =3 |
|
tStream.Open |
|
Data_5xsoft.Position = iFormStart |
|
Data_5xsoft.CopyTo tStream,iInfoEnd-iFormStart |
|
tStream.Position = 0 |
|
tStream.Type = 2 |
|
tStream.Charset ="big5" |
|
sInfo = tStream.ReadText |
|
tStream.Close |
|
iFormStart = InStrB(iInfoEnd,RequestData,sStart) |
|
iFindStart = InStr(22,sInfo,"name=""",1)+6 |
|
iFindEnd = InStr(iFindStart,sInfo,"""",1) |
|
sFormName = lcase(Mid (sinfo,iFindStart,iFindEnd-iFindStart)) |
|
if InStr (45,sInfo,"filename=""",1) > 0 then |
|
set theFile=new FileInfo |
|
iFindStart = InStr(iFindEnd,sInfo,"filename=""",1)+10 |
|
iFindEnd = InStr(iFindStart,sInfo,"""",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)+14 |
|
iFindEnd = InStr(iFindStart,sInfo,vbCr) |
|
theFile.FileType =Mid (sinfo,iFindStart,iFindEnd-iFindStart) |
|
theFile.FileStart =iInfoEnd |
|
theFile.FileSize = iFormStart -iInfoEnd -3 |
|
theFile.FormName=sFormName |
|
if not objFile.Exists(sFormName) then |
|
objFile.add sFormName,theFile |
|
end if |
|
else |
|
tStream.Type =1 |
|
tStream.Mode =3 |
|
tStream.Open |
|
Data_5xsoft.Position = iInfoEnd |
|
Data_5xsoft.CopyTo tStream,iFormStart-iInfoEnd-3 |
|
tStream.Position = 0 |
|
tStream.Type = 2 |
|
tStream.Charset ="big5" |
|
sFormValue = tStream.ReadText |
|
tStream.Close |
|
if objForm.Exists(sFormName) then |
|
objForm(sFormName)=objForm(sFormName)&", "&sFormValue |
|
else |
|
objForm.Add sFormName,sFormValue |
|
end if |
|
end if |
|
iFormStart=iFormStart+iStart+1 |
|
wend |
|
RequestData="" |
|
set tStream =nothing |
|
End Sub |
|
|
|
Private Sub Class_Terminate |
|
if Request.TotalBytes>0 then |
|
objForm.RemoveAll |
|
objFile.RemoveAll |
|
set objForm=nothing |
|
set objFile=nothing |
|
Data_5xsoft.Close |
|
set Data_5xsoft =nothing |
|
end if |
|
End 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 function |
|
End Class |
|
|
|
Class 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> |