利用ASP.NET向服務(wù)器上傳文件
2024-07-10 12:56:05
供稿:網(wǎng)友
文件上傳技術(shù)是一個很實用的技術(shù),有著很廣泛的應(yīng)用,在asp.net自身的前一個版本asp里實現(xiàn)這個功能,就必須使用第三方的組件或者自己開發(fā)組件了,現(xiàn)在,用asp.net實現(xiàn)起來就簡單得多了,我們不需要使用任何組件就可以實現(xiàn)上傳的功能了。
為了方便講解,我們可以把文件上傳分成兩種類型:單一文件上傳和多文件上傳。
單一文件上傳
我們先來介紹單一文件上傳的方法,單一文件上傳就比較簡單了,
下面是實現(xiàn)單一文件上傳的完整代碼:
<%@ import namespace="system" %>
<%@ import namespace="system.web.httppostedfile" %>
<%@ import namespace="system.web.ui.htmlcontrols.htmlinputfile" %>
<script language="vb" runat="server">
sub upload(src as object, e as eventargs)
if uploadfile.postedfile.contentlength=0 then
showuploadfile.innertext="上傳失敗或文件不存在!"
else
'獲取文件名
dim temp() as string=split(uploadfile.postedfile.filename,"/")
dim filename as string=temp(temp.length-1)
'保存文件
uploadfile.postedfile.saveas(server.mappath(".") & "/files/" & filename)
'顯示上傳結(jié)果
showuploadfile.innerhtml="文件上傳成功!<br>上傳文件名:" & filename
end if
end sub
</script>
<html>
<body>
<form runat="server" enctype="multipart/form-data">
<input type="file" id="uploadfile" runat="server" size="50"><br>
<asp:button runat="server" text="立即上傳" onclick="upload" />
</form>
<hr><br>
<span id="showuploadfile" runat="server"></span>
</body>
</html>
把上面的代碼保存成.aspx文件,然后在該文件所在目錄下創(chuàng)建一個存放文件的新目錄files,運行,先感受一下效果,然后再繼續(xù)看下面的講解
使用asp.net上傳文件,需要用到.net框架的兩個類:httppostedfile和htmlinputfile,這兩個類所在的命名空間分別是system.web.httppostedfile和system.web.ui.htmlcontrols.htmlinputfile,所以我們要在文件開頭先導(dǎo)入這兩個命名空間,
其中的postedfile表示上傳到服務(wù)器的文件,它包含幾個常用的屬性:
contentlength:文件大??;
filename :上傳文件的詳細路徑及文件名;
contenttype :上傳文件的文件類型。
字符分割函數(shù)split是用來取得文件名的,因為通過postedfile.filename獲得的是詳細的路徑及文件名。
多文件上傳
所謂的多文件上傳就是同時上傳多個文件,這個跟單一文件上傳大多是相同的,不同的是多文件上傳是把所有文件作為一個文件集合一起上傳到服務(wù)器的,我們需要的是把這個文件集合分解成一個個單一的文件,剩下的處理方法就跟單一文件上傳一樣了。
首先你要知道要最多同時上傳多少個文件,然后你就在form之間放多少個如下的htmlinput控件:
<input type="file" runat="server" size="50">
注意:這里的htmlinput控件控件是不需要設(shè)置id的
那怎么在上傳到服務(wù)器的文件集合中取出一個個的文件呢?看下面的代碼:
dim i as integer
for i=0 to request.files.count-1
‘使用request.files()來逐個獲取上傳的文件
dim myfile as httppostedfile=request.files(i)
'這里的myfile就相當于上例中的postedfile,可以用myfile.filename獲得文件名,etc
'這里的處理代碼就跟單一文件上傳的一樣了
next
現(xiàn)在你已經(jīng)掌握了asp.net文件上傳技術(shù)了,只要靈活應(yīng)用,美化上傳界面,做出好的asp.net上傳程序了也不是什么難事了。