asp將本地的文件上傳到服務(wù)器
今天我們講解如何利用asp的上傳功能將本地的文件上傳到服務(wù)器上。
最簡系統(tǒng)包括下面三個(gè)文件:
upload.htm --上傳口文件,選擇本地文件
uploadimg.asp --上傳程序控制文件
upload_5xsoft.inc --無組件上傳類,此文件初學(xué)者不用學(xué)習(xí),只要會(huì)用就可以了
upload.htm內(nèi)容————上傳口文件,選擇本地文件
<html> <head> </head> <body> <table width="80%" border="0" align="center"> <form name="form1" method="post" action="uploadimg.asp" enctype="multipart/form-data"> <tr> <td align="center"><input name="upfile" type="file" id="upfile"></td> </tr> <tr> <td align="center"><input type="submit" name="Submit" value="上傳圖片"></td> </tr> </form> </table> </body> </html>
uploadimg.asp內(nèi)容————上傳程序控制文件
<!--#include FILE="upload_5xsoft.inc"--> <% dim upload,file,filepath filepath="UPLOAD/" set upload=new upload_5xSoft ''建立上傳對(duì)象 for each formName in upload.file ''列出所有上傳了的文件 set file=upload.file(formName) ''生成一個(gè)文件對(duì)象 if file.FileSize>0 then ''如果 FileSize > 0 說明有文件數(shù)據(jù) fname = file.filename file.SaveAs Server.mappath(filepath&fname) ''保存文件 end if set file=nothing next set upload=nothing ''刪除此對(duì)象
upload_5xsoft.inc內(nèi)容————此文件內(nèi)容不屬于本演練程序內(nèi)容,本演練應(yīng)用此類的方法
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
dim oUpFileStream
Class upload_5xSoft
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.93"
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)
Response.Write "<font size=""2"">頁面執(zhí)行時(shí)間:"&FormatNumber((Timer() -time1)*1000,3)&"毫秒</font><br>"
oUpFileStream.Position=0
RequestBinDate =oUpFileStream.Read
iFormStart = 1
iFormEnd = LenB(RequestBinDate)
bCrLf = chrB(13) & chrB(10)
sStart = MidB(RequestBinDate,1, InStrB(iFormStart,RequestBinDate,bCrLf)-1)
iStart = LenB (sStart)
iFormStart=iFormStart+iStart+1
while (iFormStart + 10) < iFormEnd
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
'取得表單項(xiàng)目名稱
iFormStart = InStrB(iInfoEnd,RequestBinDate,sStart)
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)
'取得文件類型
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 -3
oFileInfo.FormName=sFormName
file.add sFormName,oFileInfo
else
'如果是表單項(xiàng)目
tStream.Close
tStream.Type =1
tStream.Mode =3
tStream.Open
oUpFileStream.Position = iInfoEnd
oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-3
tStream.Position = 0
tStream.Type = 2
tStream.Charset ="gb2312"
sFormvalue = tStream.ReadText
form.Add sFormName,sFormvalue
end if
tStream.Close
iFormStart=iFormStart+iStart+1
wend
RequestBinDate=""
set tStream =nothing
End Sub
Private Sub Class_Terminate
if not Request.TotalBytes<1 then
form.RemoveAll
file.RemoveAll
set form=nothing
set file=nothing
oUpFileStream.Close
set oUpFileStream =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 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,FileType,FileStart
Private Sub Class_Initialize
FileName = ""
FilePath = ""
FileSize = 0
FileStart= 0
FormName = ""
FileType = ""
End Sub
Public function SaveAs(FullPath)
dim oFileStream,ErrorChar,i
SaveAs=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
SaveAs=0
end function
End Class
</SCRIPT>此文所訴的內(nèi)容是上傳文件的最簡化程式,請(qǐng)朋友們自己分析一下,學(xué)會(huì)本演練,asp一般的上傳功能就基本掌握了。
- asp.net+FCKeditor上傳圖片顯示叉叉圖片無法顯示的問題的解決方法
- asp.net fileupload控件上傳文件與多文件上傳
- ASP實(shí)現(xiàn)文件上傳的方法
- asp.net(c#)開發(fā)中的文件上傳組件uploadify的使用方法(帶進(jìn)度條)
- asp.net MVC實(shí)現(xiàn)無組件上傳圖片實(shí)例介紹
- asp.net 多文件上傳,兼容IE6/7/8,提供完整代碼下載
- Asp.net實(shí)現(xiàn)MVC處理文件的上傳下載功能實(shí)例教程
- ASP.NET MVC實(shí)現(xiàn)圖片上傳、圖片預(yù)覽顯示
- asp.net(C#)中上傳大文件的幾中常見應(yīng)用方法
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
相關(guān)文章
Entity?Framework實(shí)體拆分多個(gè)表
這篇文章介紹了Entity?Framework實(shí)體拆分多個(gè)表的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
如何在不同.net版本實(shí)現(xiàn)單點(diǎn)登錄
經(jīng)過研究,重寫實(shí)現(xiàn)了一個(gè)可以在不同.net版本中實(shí)現(xiàn)單點(diǎn)登錄的簡單方法?,F(xiàn)在和大家分享一下,不足之處還望見諒2013-07-07
GridView選擇記錄同時(shí)confirm用戶確認(rèn)刪除
confirm用戶確認(rèn)刪除是一個(gè)很實(shí)用的功能,比如可以防止用戶誤操作刪除等等,感興趣的朋友可以了解下,希望本文對(duì)你有所幫助,就當(dāng)鞏固知識(shí)了2013-01-01
Asp.Net套用母版頁后元素ID不一致(個(gè)人總結(jié))
這篇文章主要介紹了Asp.Net套用母版頁后元素ID不一致(個(gè)人總結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
.Net實(shí)現(xiàn)上傳圖片按比例自動(dòng)縮小或放大的方法
這篇文章主要介紹了.Net實(shí)現(xiàn)上傳圖片按比例自動(dòng)縮小或放大的方法,實(shí)例內(nèi)容簡潔功能實(shí)用,需要的朋友可以參考下2014-09-09
ASP.NET Core啟動(dòng)地址配置方法及優(yōu)先級(jí)順序
這篇文章主要介紹了ASP.NET Core啟動(dòng)地址配置方法及優(yōu)先級(jí)順序,如果在同一臺(tái)機(jī)器上運(yùn)行多個(gè)ASP.NET Core實(shí)例,使用默認(rèn)值肯定不合適,下面我們一起進(jìn)入文章了解具體內(nèi)容吧2022-03-03
ASP.NET生成樹形顯示的GridView實(shí)現(xiàn)思路
生成樹形結(jié)構(gòu)的表格數(shù)據(jù)(EasyUI也有TreeGrid,此處只是提供一個(gè)思路),可以擴(kuò)展單擊展開/收縮節(jié)點(diǎn),喜歡的朋友可以了解下啊,或許本文對(duì)你學(xué)習(xí)GridView有所幫助2013-02-02
淺談.net core 注入中的三種模式:Singleton、Scoped 和 Transient
這篇文章主要介紹了淺談.net core 注入中的三種模式:Singleton、Scoped 和 Transient,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04

