[asp常用代码]文件上传代码
生活随笔
收集整理的這篇文章主要介紹了
[asp常用代码]文件上传代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
調用實例: UploadDemo.html
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN">
<html>
<head>
<title>Upload?Demo</title>
<meta?name="keywords"?content="淄博本地信息網">
<meta?name="author"?content="淄博本地信息網">
</head>
<body>
<table?width="100%"?cellpadding="0"?cellspacing="0"?border="0">
?<tr>
??<td?class=tdTitle>類別圖片:</td>
??<td>
???<table?width="100%"?cellpadding="0"?cellspacing="0"?border="0">
????<tr>
?????<td?width="210"><input?name="image"?type="text"?id="image"?value="<%=image?%>"?style="width:200px"></td>
?????<td><iframe?src="upload.asp?editname=image&uppath=catImg&filelx=jpg"?frameborder=0?scrolling=no?width="400"?height="25"></iframe></td>
????</tr>
???</table>
??</td>
?</tr>
</table>
</body>
</html>
<%
Dim?uppath,filelx,formName,EditName
uppath??="../"&request("uppath")&"/"????????'文件上傳路徑
filelx??=request("filelx")????????????????'文件上傳類型
formName=request("formName")????????????'回傳到上頁面編輯框所在Form的Name
EditName=request("EditName")????????????'回傳到上頁面編輯框的Name
sizeName=request("sizename")????????????'回傳到上頁面編輯框的Name
%>
<html>
<head>
<title>圖片上傳</title>
<meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312">
<style?type="text/css">
<!--
body,form,td?{}{margin:1px?0;padding:0;}
input?{}{height:21px;}
-->
</style>
</head>
<body?bgcolor="#FFFFFF"?text="#000000">
<form?name="form1"?method="post"?action="uploadSave.asp"?enctype="multipart/form-data"?>
?<input?type="hidden"?name="filepath"?value="<%=uppath%>">
?<input?type="hidden"?name="filelx"?value="<%=filelx%>">
?<input?type="hidden"?name="EditName"?value="<%=EditName%>">
?<input?type="hidden"?name="sizeName"?value="<%=sizeName%>">
?<input?type="hidden"?name="FormName"?value="<%=formName%>">
?<input?type="hidden"?name="act"?value="uploadfile">
?<table?width="100%"?cellspacing="0"?cellpadding="3"?align="center"?height="22">
??<tr?align="center"?valign="middle">
???<td?align="left">
????<input?type="file"?name="file1"?style="width:350px"?value="">
????<input?type="submit"?value="上傳">
???</td>
??</tr>
?</table>
</form>
</body>
</html>
<!--#include?file="upload_wj.asp"-->
<meta?http-equiv="Content-Type"?content="text/html;?charSet=gb2312">
<style?type="text/css">
<!--
*?{font-size:12px;}
-->
</style>
<%
DisableOutSite??'禁從站外進入
uploadSave
Sub?DisableOutSite()
??Dim?server_v1,server_v2
??server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
??server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
??If?mid(server_v1,8,len(server_v2))<>server_v2?Then?response.Redirect("/")
??If?instr(request.servervariables("http_referer"),"http://"&request.servervariables("host")?)<1?Then?response.Redirect("/")
End?Sub
Sub?uploadSave
??Dim?upload,filepath,filelx,rename,formName
??Dim?fileExt,ranNum,filename,todb_filename,i,upfile
??Set?upload=?New?upload_file
??If?upload.form("act")<>"uploadfile"?Then
????Set?upload?=?Nothing
????Exit?Sub
??End?If
??filepath??????=?trim(upload.form("filepath"))
??filelx???????????=?trim(upload.form("filelx"))
??sizeName???=?trim(upload.form("sizeName"))
??rename???????=?trim(upload.form("rename"))
??fileNameElement?=?trim(upload.form("editName"))
??i=0
??For?Each?formName?In?upload.File
????Set?upfile=upload.File(formName)
????fileExt=lcase(upfile.FileExt)?'得到的文件擴展名不含有.
????If?upfile.fileSize<100?Then
??????response.write?"<span>請先選擇你要上傳的文件! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
??????Exit?Sub
????End?If
????'--------檢查文件擴展名
????If?(filelx<>"swf")?and?(filelx<>"jpg")?and?(filelx<>"doc")?Then
??????response.write?"<span>該文件類型不能上傳! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
??????response.end
????End?If
????If?filelx="swf"?Then
??????If?fileext<>"swf"??and?(fileext<>"rm")?and?(fileext<>"ram")?and?(fileext<>"wmv")?and?(fileext<>"asf")?Then
????????response.write?"<span>只能上傳swf/rm/ram/wmv/asf文件! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
????????response.end
??????End?If
????End?If
????If?filelx="doc"?Then
??????If?fileext<>"doc"??and?fileext<>"pdf"?and?fileext<>"zip"?and?fileext<>"rar"??Then
???????response.write?"<span>只能上傳doc,pdf,zip,rar格式文件! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
???????response.end
??????End?If
????End?If
????If?filelx="jpg"?Then
??????If?fileext<>"gif"?and?fileext<>"jpg"?and?fileext<>"png"?And?fileExt<>"bmp"?Then
????????response.write?"<span>上傳圖片類型錯誤! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
????????response.end
??????End?If
????End?If
????'--------檢查文件擴展名
????'--------檢查大小是否超過限制
????Dim?maxSize
????Select?Case?filelx
??????Case?"jpg","swf"?:?maxSize?=?3000*1024
??????Case?Else??:?maxSize?=?2000*1024
????End?Select
????If?upfile.filesize>maxSize?Then
??????response.write?"<span>文件大小超過限制 [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
??????response.end
????End?If
????'//--------檢查大小是否超過限制
????'--------處理重新命名上傳文件的情況
????If?rename=""?Then
??????randomize
??????ranNum=int(90000*rnd)+10000
??????filename=filepath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt?'程序寫入的完整的路徑及文件名
??????todb_filename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt??'寫入數據庫的文件名
????Else
??????filename=filepath&rename?'程序寫入的完整的路徑及文件名
??????todb_filename=rename??'寫入數據庫的文件名
????End?If
????'//--------處理重新命名上傳文件的情況
????If?upfile.FileSize>0?Then?????????''如果?FileSize?>?0?說明有文件數據
??????upfile.SaveToFile?Server.mappath(FileName)
??????Call?ChkHackWord(FileName)
??????'response.write?upfile.FileName&" 上傳成功! <br>"
??????'response.write?"新文件名:"&FileName&"<br>"
??????'response.write?"新文件名已復制到所需的位置,可關閉窗口!"
??????oFrm?=??upload.form("FormName")
??????If?filelx="swf"?Then
????????response.write?"<script>parent.document."&?oFrm?&".size.value='"&int(upfile.FileSize/1024)&"?K'</script>"
??????End?If
??????If?sizeName<>""?Then
????????response.write?"<script>parent.document."&?oFrm?&"."&?sizeName?&".value='"&?int(upfile.FileSize/1024)&"?KB'</script>"
??????End?If
??????response.write?"<script>parent.document."&?oFrm?&"."&?fileNameElement?&".value='"&todb_FileName&"'</script>"
????End?If
????Set?upfile=nothing
??Next
??Set?upload=nothing
??%>
??<script?language="javascript">window.alert("文件上傳成功!請不要修改生成的鏈接地址!");</script>
<%
End?Sub
%>
<%
'----------------------------------------------------------------------
'轉發時請保留此聲明信息,這段聲明不并會影響你的速度!
'*******************????無組件上傳類???********************************
'修改者:梁無懼
'電子郵件: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"
'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
%>
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN">
<html>
<head>
<title>Upload?Demo</title>
<meta?name="keywords"?content="淄博本地信息網">
<meta?name="author"?content="淄博本地信息網">
</head>
<body>
<table?width="100%"?cellpadding="0"?cellspacing="0"?border="0">
?<tr>
??<td?class=tdTitle>類別圖片:</td>
??<td>
???<table?width="100%"?cellpadding="0"?cellspacing="0"?border="0">
????<tr>
?????<td?width="210"><input?name="image"?type="text"?id="image"?value="<%=image?%>"?style="width:200px"></td>
?????<td><iframe?src="upload.asp?editname=image&uppath=catImg&filelx=jpg"?frameborder=0?scrolling=no?width="400"?height="25"></iframe></td>
????</tr>
???</table>
??</td>
?</tr>
</table>
</body>
</html>
?
調用Upload.asp為顯示瀏覽上傳表單頁面,代碼如下:
?
Upload.asp<%
Dim?uppath,filelx,formName,EditName
uppath??="../"&request("uppath")&"/"????????'文件上傳路徑
filelx??=request("filelx")????????????????'文件上傳類型
formName=request("formName")????????????'回傳到上頁面編輯框所在Form的Name
EditName=request("EditName")????????????'回傳到上頁面編輯框的Name
sizeName=request("sizename")????????????'回傳到上頁面編輯框的Name
%>
<html>
<head>
<title>圖片上傳</title>
<meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312">
<style?type="text/css">
<!--
body,form,td?{}{margin:1px?0;padding:0;}
input?{}{height:21px;}
-->
</style>
</head>
<body?bgcolor="#FFFFFF"?text="#000000">
<form?name="form1"?method="post"?action="uploadSave.asp"?enctype="multipart/form-data"?>
?<input?type="hidden"?name="filepath"?value="<%=uppath%>">
?<input?type="hidden"?name="filelx"?value="<%=filelx%>">
?<input?type="hidden"?name="EditName"?value="<%=EditName%>">
?<input?type="hidden"?name="sizeName"?value="<%=sizeName%>">
?<input?type="hidden"?name="FormName"?value="<%=formName%>">
?<input?type="hidden"?name="act"?value="uploadfile">
?<table?width="100%"?cellspacing="0"?cellpadding="3"?align="center"?height="22">
??<tr?align="center"?valign="middle">
???<td?align="left">
????<input?type="file"?name="file1"?style="width:350px"?value="">
????<input?type="submit"?value="上傳">
???</td>
??</tr>
?</table>
</form>
</body>
</html>
?
保存上傳文件的uploadSave.asp
?
uploadSave<!--#include?file="upload_wj.asp"-->
<meta?http-equiv="Content-Type"?content="text/html;?charSet=gb2312">
<style?type="text/css">
<!--
*?{font-size:12px;}
-->
</style>
<%
DisableOutSite??'禁從站外進入
uploadSave
Sub?DisableOutSite()
??Dim?server_v1,server_v2
??server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
??server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
??If?mid(server_v1,8,len(server_v2))<>server_v2?Then?response.Redirect("/")
??If?instr(request.servervariables("http_referer"),"http://"&request.servervariables("host")?)<1?Then?response.Redirect("/")
End?Sub
Sub?uploadSave
??Dim?upload,filepath,filelx,rename,formName
??Dim?fileExt,ranNum,filename,todb_filename,i,upfile
??Set?upload=?New?upload_file
??If?upload.form("act")<>"uploadfile"?Then
????Set?upload?=?Nothing
????Exit?Sub
??End?If
??filepath??????=?trim(upload.form("filepath"))
??filelx???????????=?trim(upload.form("filelx"))
??sizeName???=?trim(upload.form("sizeName"))
??rename???????=?trim(upload.form("rename"))
??fileNameElement?=?trim(upload.form("editName"))
??i=0
??For?Each?formName?In?upload.File
????Set?upfile=upload.File(formName)
????fileExt=lcase(upfile.FileExt)?'得到的文件擴展名不含有.
????If?upfile.fileSize<100?Then
??????response.write?"<span>請先選擇你要上傳的文件! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
??????Exit?Sub
????End?If
????'--------檢查文件擴展名
????If?(filelx<>"swf")?and?(filelx<>"jpg")?and?(filelx<>"doc")?Then
??????response.write?"<span>該文件類型不能上傳! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
??????response.end
????End?If
????If?filelx="swf"?Then
??????If?fileext<>"swf"??and?(fileext<>"rm")?and?(fileext<>"ram")?and?(fileext<>"wmv")?and?(fileext<>"asf")?Then
????????response.write?"<span>只能上傳swf/rm/ram/wmv/asf文件! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
????????response.end
??????End?If
????End?If
????If?filelx="doc"?Then
??????If?fileext<>"doc"??and?fileext<>"pdf"?and?fileext<>"zip"?and?fileext<>"rar"??Then
???????response.write?"<span>只能上傳doc,pdf,zip,rar格式文件! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
???????response.end
??????End?If
????End?If
????If?filelx="jpg"?Then
??????If?fileext<>"gif"?and?fileext<>"jpg"?and?fileext<>"png"?And?fileExt<>"bmp"?Then
????????response.write?"<span>上傳圖片類型錯誤! [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
????????response.end
??????End?If
????End?If
????'--------檢查文件擴展名
????'--------檢查大小是否超過限制
????Dim?maxSize
????Select?Case?filelx
??????Case?"jpg","swf"?:?maxSize?=?3000*1024
??????Case?Else??:?maxSize?=?2000*1024
????End?Select
????If?upfile.filesize>maxSize?Then
??????response.write?"<span>文件大小超過限制 [?<a?href=""javascript:history.go(-1);"">重新上傳</a>?]</span>"
??????response.end
????End?If
????'//--------檢查大小是否超過限制
????'--------處理重新命名上傳文件的情況
????If?rename=""?Then
??????randomize
??????ranNum=int(90000*rnd)+10000
??????filename=filepath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt?'程序寫入的完整的路徑及文件名
??????todb_filename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt??'寫入數據庫的文件名
????Else
??????filename=filepath&rename?'程序寫入的完整的路徑及文件名
??????todb_filename=rename??'寫入數據庫的文件名
????End?If
????'//--------處理重新命名上傳文件的情況
????If?upfile.FileSize>0?Then?????????''如果?FileSize?>?0?說明有文件數據
??????upfile.SaveToFile?Server.mappath(FileName)
??????Call?ChkHackWord(FileName)
??????'response.write?upfile.FileName&" 上傳成功! <br>"
??????'response.write?"新文件名:"&FileName&"<br>"
??????'response.write?"新文件名已復制到所需的位置,可關閉窗口!"
??????oFrm?=??upload.form("FormName")
??????If?filelx="swf"?Then
????????response.write?"<script>parent.document."&?oFrm?&".size.value='"&int(upfile.FileSize/1024)&"?K'</script>"
??????End?If
??????If?sizeName<>""?Then
????????response.write?"<script>parent.document."&?oFrm?&"."&?sizeName?&".value='"&?int(upfile.FileSize/1024)&"?KB'</script>"
??????End?If
??????response.write?"<script>parent.document."&?oFrm?&"."&?fileNameElement?&".value='"&todb_FileName&"'</script>"
????End?If
????Set?upfile=nothing
??Next
??Set?upload=nothing
??%>
??<script?language="javascript">window.alert("文件上傳成功!請不要修改生成的鏈接地址!");</script>
<%
End?Sub
%>
?
uploadSave.asp中使用無懼無組件上傳類 :
?
upload_wj.asp<%
'----------------------------------------------------------------------
'轉發時請保留此聲明信息,這段聲明不并會影響你的速度!
'*******************????無組件上傳類???********************************
'修改者:梁無懼
'電子郵件: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"
'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
%>
轉載于:https://www.cnblogs.com/s1ihome/archive/2008/11/18/1336061.html
總結
以上是生活随笔為你收集整理的[asp常用代码]文件上传代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Visual Basic 10.0
- 下一篇: 21天学通c++之7.10 for 循环