asp文件上傳伺服器
『壹』 asp如何實現文件上傳功能
基本原理是:採用ADO Stream對象的BinaryRead方法將FORM中的所有數據讀出,從中截取出所需的文件數據,以二進制文件方式存檔。
下面是上傳文件頁面的一個例子:
<html>
<body>
<form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp">
<input type="file" name="FileName">
<INPUT TYPE="Submit" VALUE="Upload"></TD>
</form>
</body>
</html>
(1)asp文件上傳伺服器擴展閱讀
幾種文件上傳技術的比較
1、基於HTTP協議
該方法需要編程者利用第三方軟體,如DELPHI、VB等,在應用程序中先進行HTTP協議編程,然後將待上傳文件內容按HTTP協議的格式打包,最後向WEB伺服器發送上傳的請求報文,從而實現文件的上傳。
因為DELPHI和VB不能編寫完整的WEB網路程序,只能編寫WEB小應用程序,因此,該方法只用於功能受限的網路應用。
2、基於VB(或DELPHI等)開發的文件上傳組件
該方法利用VB(或DELPHI等編程語言)開發ASP伺服器組件,實現特定的文件上傳服務。它首先利用ASP表單功能將文件(二進制格式)從用戶端上傳到伺服器端,然後使用VB開發的組件,對二進制文件進行處理,成為可以正常讀寫的文件。
該方法要求編程者不僅掌握ASP語言,而且還能利用VB等第三方語言進行組件編程,增加了開發的難度。
3、基於資料庫技術
該方法和上個方法有類似之處。不同的地方在於對上傳的二進制文件的處理上。它使用資料庫來保存二進制文件。無論是小型資料庫還是大型資料庫都提供了存儲二進制數據的數據類型,只要以Append Chunk方式將數據存入相應的欄位就可以了。
該方法雖然簡單可行,但是因為每次上傳的文件大小都是不一樣的,因此,會對資料庫的空間造成很大的浪費,降低了數據的訪問速度;並且使得文件只能在資料庫環境下進行訪問,造成了很大的不便。
『貳』 asp 提交表單和上傳文件
asp.net和asp上傳方式基本相似。都需要使用到form表單。下面分別介紹asp和asp.net兩種文件上傳方式。
第一種:asp方式
首先建立form表單
<form name="form1" method="post" action="send.asp"enctype="multipart/form-data">
<input name="title" type="text"/>
<input name="uploadimg" type="file" />
<input name="submit" type="submit" value="提交"/>
</form>
asp的表單一定要注意加上enctype="multipart/form-data"這個屬性,否則是上傳不了圖片的,這個屬性很關鍵。
上傳處理代碼也就是send.asp的處理代碼。
因為asp本身沒有上傳的組件或控制項,這里只能藉助第三方式的組件或類。上傳組件推薦使用aspJpeg組件,這個組件不僅可以上傳文件,如果是圖片的話,可以調節尺寸尺寸,創建縮略圖等。很方便,目前一般的空間商都支持這個組件,另外就是使用組件上傳類,像風聲,無懼等,都是無組件上傳。
上傳代碼,這里假設採用的是風聲無組件上傳類。類文件已經包含進去。
<include file="uploadclass.asp"-->
處理代碼:
先初始化上傳類
dim myrequest
set myrequest = new UpLoadClass
設置屬性:
myrequest.FileType="gif,jpeg,jpg,png" //設置上傳類型
myrequest.SavePath="../upload/" //設置上傳路徑
myrequest.MaxSize=100*1024 //設置上傳文件的大小,
myrequest.AutoSave=1 //設置保存方式,為1表示自動保存
myrequest.Open //打開文件流
title =myrequest.form("title")
img =myrequest.form("uploadimg") //這兩部表示接收form表單中的數據。不 能再用request.form或request.querystring來接收了,必須用剛才初始化的對象
myrequest來接收。
現在數據接收到了,剩下的就是保存到資料庫。這和常用的數據保存方式一下的,拼接SQL.然後再執行,這里不贅述。
第二種asp.net方式。
asp.net方式,因為採用的是伺服器控制項,所以與asp有點區別。
首先是form不同,asp.net的form是伺服器控制項,需要添加ID和runat="Server"如
<form name="form1" ID="form1" runat="Server">
<asp:FileUpload ID="FileUpload1"runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上傳" /></form>
處理代碼,上傳並保存代碼
protectedvoidButton1_Click(objectsender, EventArgs e)
{
StringsavePath = Server.MapPath("upload");
if(FileUpload1.HasFile)
{
Stringfilename;
filename = FileUpload1.FileName;
savePath +=filename;
FileUpload1.SaveAs(savePath);
Page.Response.Write(FileUpload1.PostedFile.ContentType + FileUpload1.PostedFile.ContentLength+"<br>");
Page.Response.Write("<img src='"+savePath+"'>");}
else
{
Page.Response.Write("fff");
}
}
asp提交和上傳文件,與asp.net是不同的。一個是html標簽,一個是伺服器控制項。相對來說,asp.net的文件上傳比asp簡單很多,因為asp.net提供了相對應的上傳控制項。而asp沒有。只有採用第三方組件或無組件上傳類。上傳文件成功後,另外還可以加入更多的處理元素,如圖片入庫,加上水印等,這需要你自己去思考和查找資料了。