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 ,如下 -

ASP.NET文件上傳

然後,在項目名稱上點擊右鍵選擇:添加->添加新項 ,填寫文件名稱爲:Default.aspx , 如下圖所示 -

ASP.NET文件上傳

在設計視圖中,窗體如下所示:

ASP.NET文件上傳

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命名空間派生的,所以需要包含它。
  • trycatch塊用於捕獲錯誤,並顯示錯誤消息。

執行上面項目,得到以下結果 -

ASP.NET文件上傳

選擇一個要上傳的文件,然後提交上傳 -

ASP.NET文件上傳

易百教程移動端:請掃描本頁面底部(右側)二維碼並關注微信公衆號,回覆:"教程" 選擇相關教程閱讀或直接訪問: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等技術