ASP.NET文件上傳
ASP.NET有兩個控件,允許用戶將文件上傳到Web服務器。當服務器收到用戶提交的文件數據,應用程序就可以保存,檢查或忽略它。 以下控件允許上傳文件:
- HtmlInputFile - HTML服務器控件
- FileUpload - ASP.NET網頁控件
兩個控件都允許文件上傳,但是FileUpload
控件會自動設置表單的編碼,而HtmlInputFile
則不會。
在本教程中,我們演示如何使用FileUpload
控件。 FileUpload
控件允許用戶瀏覽並選擇要上傳的文件,提供瀏覽按鈕和用於輸入文件名的文本框。
當用戶通過輸入名稱或瀏覽在文本框中輸入文件名,就可以調用FileUpload
控件的SaveAs
方法來將文件保存到磁盤。
FileUpload
的基本語法是:
<asp:FileUpload ID= "Uploader" runat = "server" />
FileUpload
類從WebControl
類派生,並繼承其所有成員。除此之外,FileUpload
類具有以下只讀屬性:
編號
屬性
描述
1
FileBytes
返回要上傳的文件中的字節數組。
2
FileContent
返回指向要上傳的文件的流對象。
3
FileName
返回要上傳的文件的名稱。
4
HasFile
指定控件是否有要上傳的文件。
5
PostedFile
返回對上傳文件的引用。
要上傳的文件封裝在HttpPostedFile
類型的對象中,可以通過FileUpload
類的PostedFile
屬性訪問。
HttpPostedFile
類具有以下常用屬性:
編號
屬性
描述
1
ContentLength
以字節爲單位返回上傳文件的大小。
2
ContentType
返回上傳文件的MIME類型。
3
FileName
返回完整的文件名。
4
InputStream
返回指向上傳文件的流對象。
示例
以下示例演示了FileUpload
控件及其屬性。窗體有一個FileUpload
控件以及一個保存按鈕和一個用於顯示文件名,文件類型和文件長度的標籤控件。
打開Visual Studio ,創建一個空的網站項目:FileUploading ,如下 -
然後,在項目名稱上點擊右鍵選擇:添加->添加新項 ,填寫文件名稱爲:Default.aspx , 如下圖所示 -
在設計視圖中,窗體如下所示:
Default.aspx 文件中的代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>文件上傳示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3> 文件上傳:</h3>
<br />
<asp:FileUpload ID="FileUpload1" runat="server" />
<br />
<asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="上傳保存" style="width:85px" />
<br /><br />
<asp:Label ID="lblmessage" runat="server" />
</div>
</form>
</body>
</html>
保存按鈕後端的代碼(Default.aspx.cs )如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnsave_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder("Empty File");
string fn = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
string SaveLocation = Server.MapPath("upload") + "\\" + fn;
lblmessage.Text = SaveLocation;
if ((FileUpload1.PostedFile != null) && (FileUpload1.PostedFile.ContentLength > 0))
{
try
{
sb.AppendFormat(" 正在上傳文件: {0}", FileUpload1.FileName);
//saving the file
//FileUpload1.SaveAs("F:\\worksp\\asp.net\\FileUploading\\" + FileUpload1.FileName);
FileUpload1.PostedFile.SaveAs(SaveLocation);
//Showing the file information
sb.AppendFormat("<br/> 保存爲: {0}", FileUpload1.PostedFile.FileName);
sb.AppendFormat("<br/> 文件類型: {0}", FileUpload1.PostedFile.ContentType);
sb.AppendFormat("<br/> 文件長度: {0}", FileUpload1.PostedFile.ContentLength);
sb.AppendFormat("<br/> 文件名稱: {0}", FileUpload1.PostedFile.FileName);
}catch (Exception ex)
{
sb.Append("<br/> 錯誤 <br/>");
sb.AppendFormat("Unable to save file <br/> {0}", ex.Message);
}
}
lblmessage.Text = sb.ToString();
}
}
請注意以下幾點:
-
StringBuilder
類是從System.IO
命名空間派生的,所以需要包含它。 -
try
和catch
塊用於捕獲錯誤,並顯示錯誤消息。
執行上面項目,得到以下結果 -
選擇一個要上傳的文件,然後提交上傳 -
易百教程移動端:請掃描本頁面底部(右側)二維碼並關注微信公衆號,回覆:"教程" 選擇相關教程閱讀或直接訪問:http://m.yiibai.com 。
上一篇:ASP.NET數據庫訪問(Access) 下一篇:ASP.NET AdRotator控件
加QQ羣啦,易百教程官方技術學習羣
QQ羣名稱
羣號
人數
免費
等級
羣介紹
JAVA技術
227270512
2000
否
LV5
Java基礎,JSP(Servlet),JAVA框架,Java高併發架構,Maven等等
MySQL/SQL
418407075
2000
否
LV5
SQL基礎,MySQL基礎,MySQL存儲過程,視圖,觸發器等等
大數據開發
655154550
2000
否
LV5
Spark,zookeeper,kafka,CDH,hive,fulme,hbase等Hadoop雲計算生態圈技術
Python技術
287904175
2000
否
LV5
Python編程,Python Web,Python大數據,Python爬蟲,自然語言處理等
Linux技術
479429477
2000
是
LV1
Redhat/Centos,Ubuntu,Shell,運維,監控等技術
PHP/Web開發者
460153241
1000
是
LV0
PHP基礎,PHP高級,網站優化/架構,JS,HTML,JQuery,前端等Web開發技術
人工智能
456236082
1000
是
LV0
人工智能,深度學習,算法等技術
Oracle數據庫
175248146
1000
是
LV0
SQL基礎,Oracle基礎,Oracle存儲過程,視圖,觸發器等等
Android開發
159629185
1000
是
LV0
Android開發,Android Studio,Kotlin,Dagger等技術
微軟技術
579821706
1000
是
LV0
C#,ASP.Net,VB.Net,ADO.Net,SQL Server,VBA,Excel等技術