& ltinput type = \" submit \" name = \" submit 1 \" value = \" upload \" " />
這是放在前面的代碼,用於選擇圖片和上傳按鈕
& ltinput name = " FileName " type = " FILE " class = " tx 1 " size = " 22 " >
& ltinput type = " submit " name = " submit 1 " value = " upload " style = " border:1px double RGB(88,88,88);font:9pt " & gt;
& lt/form & gt;
這是Upfile_ProductPic.asp文件。修改存儲路徑和數據表。
& lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN " " ame = Requesta(" Act ")
' Const upload_type=0 '上傳方法:0=上傳類而不用擔心和組件,1=FSO上傳2=lyfupload,3=aspupload,4 = chinaaspupload。
const SaveUpProductPicPath = " UploadProductPic "
const UpProductPicType = " jpg | gif | png | BMP "
const MaxProductPicSize = 20480000
dim上傳,oFile,formName,保存路徑,文件名,文件擴展名,oFileSize
dim啟用上傳
dim arrUpFileType
迪姆蘭努姆
暗淡消息,發現錯誤
msg= " "
FoundErr=false
EnableUpload=false
Savepath = "updiles/" '存儲上傳文件的目錄。
% & gt
& lthtml & gt
& lthead & gt
& ltmeta ame & amp"."& amp文件擴展名
Ofile。savetofile服務器。mappath(文件名)'保存文件。
連接打開構造
SQL = " update index pic set p _ picture = ' " & amp;picname & amp。“& ampfileExt & amp其中p _ name = ' " & amppicname & amp"
連接執行(sql)
連接關閉
Alert_reDirect“上傳成功!”,“indexPic.asp”
如果…就會結束
然後
設置上傳=無
末端接頭
% & gt
這是upfile_class.asp文件,不需要修改。
& lt%
Dim輸出文件流
-
文件上傳類
向上分類文件_分類
Dim格式,文件,版本,錯誤
私有子類_Initialize
Version = "無畏上傳類版本V1.2 "
Err = -1
末端接頭
私有子類_終止
清除變量和對象。
如果Err & lt那麽0
形式。全部刪除
設置表單=無
文件。全部刪除
設置文件=無
oUpFileStream。關閉
Set oUpFileStream = Nothing
如果…就會結束
末端接頭
公共Sub GetData (MaxSize)
定義變量
Dim RequestBinDate,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
Dim iFileSize,sFilePath,sFileType,sFormValue,sFileName
Dim iFindStart,iFindEnd
Dim iFormStart,iFormEnd,sFormName
代碼開始
如有要求。TotalBytes & lt1然後'如果沒有數據上傳。
Err = 1
出口接頭
如果…就會結束
如果MaxSize & gt0 Then '如果大小有限
如有要求。TotalBytes & gt那就MaxSize吧
如果上傳的數據超出限制,Err = 2。
出口接頭
如果…就會結束
如果…就會結束
設置表單=服務器。CreateObject("腳本。字典》)
形式。CompareMode = 1
設置文件=服務器。CreateObject("腳本。字典》)
文件。CompareMode = 1
設置tStream = Server。CreateObject ("ADODB。流”)
Set oUpFileStream = Server。CreateObject ("ADODB。流”)
oUpFileStream。Type = 1
oUpFileStream。模式= 3
oUpFileStream。打開
oUpFileStream。寫請求。BinaryRead(請求。總字節數)
oUpFileStream。位置= 0
RequestBinDate = oUpFileStream。閱讀
iFormEnd = oUpFileStream。大小
bCrLf = ChrB (13)ChrB (10)
獲取各項之間的分隔符。
sSpace = MidB (RequestBinDate,1,InStrB (1,RequestBinDate,bCrLf)-1)
iStart = LenB (sSpace)
iFormStart = iStart+2
分解項目
做
iInfoEnd = InStrB (iFormStart,RequestBinDate,bCrLf & ampbCrLf)+3
tStream。Type = 1
tStream。模式= 3
tStream。打開
oUpFileStream。Position = iFormStart
oUpFileStream。復制到tStream,iInfoEnd-iFormStart
tStream。位置= 0
tStream。類型= 2
tStream。CharSet = "gb2312 "
sInfo = tStream。閱讀文本
獲取表單項目的名稱
iFormStart = InStrB (iInfoEnd,RequestBinDate,sSpace)-1
iFindStart = InStr (22,sInfo," name= " ",1)+6
iFindEnd = InStr (iFindStart,sInfo,"""",1)
sFormName = Trim(Mid (sinfo,iFindStart,iFindEnd-iFindStart))
如果是文件的話。
If InStr (45,sInfo," filename= " ",1)>那麽0
Set oFileInfo = new FileInfo_Class
獲取文檔屬性
iFindStart = InStr (iFindEnd,sInfo," filename= " ",1)+10
iFindEnd = InStr (iFindStart,sInfo,"""",1)
sFileName = Trim(Mid(sinfo,iFindStart,iFindEnd-iFindStart))
oFileInfo。FileName = Mid (sFileName,InStrRev (sFileName," \")+1)
oFileInfo。FilePath = Left (sFileName,InStrRev (sFileName," \ "))
oFileInfo。FileExt = Mid (sFileName,InStrRev (sFileName," ")+1)
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
其他
如果是表單項。
tStream。關閉
tStream。Type = 1
tStream。模式= 3
tStream。打開
oUpFileStream。Position = iInfoEnd
oUpFileStream。復制到tStream,iFormStart-iInfoEnd-2
tStream。位置= 0
tStream。類型= 2
tStream。CharSet = "gb2312 "
sFormValue = tStream。閱讀文本
如果形式。存在(sFormName)那麽
Form(s formname)= Form(s formname)& amp;“,”& ampsFormValue
其他
形式。添加sFormName,sFormValue
如果…就會結束
如果…就會結束
tStream。關閉
iFormStart = iFormStart+iStart+2
如果到達文件末尾,請退出。
循環直到(iFormStart+2)>= iFormEnd
RequestBinDate = " "
設置tStream = Nothing
末端接頭
結束類
-
文件屬性類
類FileInfo_Class
Dim格式名,文件名,文件路徑,文件大小,文件類型,文件開始,文件擴展名
保存文件方法
公共函數SaveToFile(路徑)
if lcase((right(Path,3))& lt;& gtLcase (fileext))的經典上傳漏洞_
回應。寫(" & lt腳本語言= javascript & gtAlert('警告:不允許上傳此類文件!');& lt/script & gt;")
響應.結束
如果…就會結束
出錯時繼續下壹步
朦朧的幻想
set of ilestream = CreateObject(" ADODB。流”)
oFileStream。Type = 1
oFileStream。模式= 3
oFileStream。打開
oUpFileStream。Position =文件開始
oUpFileStream。復制到文件流,文件大小
oFileStream。保存文件路徑,2
oFileStream。關閉
Set oFileStream = Nothing
結束功能
獲取文件數據
公共函數文件數據
oUpFileStream。Position =文件開始
FileData = oUpFileStream。讀取(文件大小)
結束功能
結束類
'**************************************************
函數名:IsObjInstalled
用途:檢查組件是否已安裝。
參數:strClassString -組件名稱
返回值:true-已安裝。
False -未安裝。
'**************************************************
函數IsObjInstalled(strClassString)
出錯時繼續下壹步
IsObjInstalled = False
Err = 0
Dim xTestObj
設置xTestObj = Server。CreateObject(strClassString)
如果0 = Err,則IsObjInstalled = True
Set xTestObj = Nothing
Err = 0
結束功能
-根據指定的名稱生成目錄。
函數MakeNewsDir(文件夾名)
維度fso,f
設置fso = Server。CreateObject("腳本。文件系統對象”)
設置f = fso。創建文件夾(文件夾名)
MakeNewsDir = True
設置fso =無
結束功能
% & gt