鍍金池/ 教程/ C#/ ASP.NET文件上傳
ASP.NET調(diào)試
ASP.NET Web Services
ASP.NET緩存
ASP.NET多線程
ASP.NET面板控件
ASP.NET數(shù)據(jù)綁定
ASP.NET數(shù)據(jù)源
ASP.NET個性化
ASP.Net教程
ASP.NET Ajax控件
ASP.NET生命周期
ASP.NET HTML服務(wù)器
ASP.NET簡介
ASP.NET驗證器
ASP.NET多視圖
ASP.NET網(wǎng)站配置
ASP.NET錯誤管理
ASP.NET自定義控件
ASP.NET LINQ
ASP.NET AdRotator控件
ASP.NET客戶端
ASP.NET文件上傳
ASP.NET服務(wù)器控件
ASP.NET開發(fā)環(huán)境配置
ASP.NET管理狀態(tài)
ASP.NET服務(wù)端
ASP.NET數(shù)據(jù)庫訪問(Access)
ASP.NET基本控件
ASP.NET安全
ASP.NET指令
ASP.NET事件處理
ASP.NET第一個程序
ASP.NET日歷控件

ASP.NET文件上傳

ASP.NET有兩個控件,允許用戶將文件上傳到Web服務(wù)器。當(dāng)服務(wù)器收到用戶提交的文件數(shù)據(jù),應(yīng)用程序就可以保存,檢查或忽略它。 以下控件允許上傳文件:

  • HtmlInputFile - HTML服務(wù)器控件
  • FileUpload - ASP.NET網(wǎng)頁控件

兩個控件都允許文件上傳,但是FileUpload控件會自動設(shè)置表單的編碼,而HtmlInputFile則不會。

在本教程中,我們演示如何使用FileUpload控件。 FileUpload控件允許用戶瀏覽并選擇要上傳的文件,提供瀏覽按鈕和用于輸入文件名的文本框。

當(dāng)用戶通過輸入名稱或瀏覽在文本框中輸入文件名,就可以調(diào)用FileUpload控件的SaveAs方法來將文件保存到磁盤。

FileUpload的基本語法是:

<asp:FileUpload ID= "Uploader" runat = "server" />

FileUpload類從WebControl類派生,并繼承其所有成員。除此之外,FileUpload類具有以下只讀屬性:

編號 屬性 描述
1 FileBytes 返回要上傳的文件中的字節(jié)數(shù)組。
2 FileContent 返回指向要上傳的文件的流對象。
3 FileName 返回要上傳的文件的名稱。
4 HasFile 指定控件是否有要上傳的文件。
5 PostedFile 返回對上傳文件的引用。

要上傳的文件封裝在HttpPostedFile類型的對象中,可以通過FileUpload類的PostedFile屬性訪問。

HttpPostedFile類具有以下常用屬性:

編號 屬性 描述
1 ContentLength 以字節(jié)為單位返回上傳文件的大小。
2 ContentType 返回上傳文件的MIME類型。
3 FileName 返回完整的文件名。
4 InputStream 返回指向上傳文件的流對象。

示例

以下示例演示了FileUpload控件及其屬性。窗體有一個FileUpload控件以及一個保存按鈕和一個用于顯示文件名,文件類型和文件長度的標簽控件。

打開Visual Studio ,創(chuàng)建一個空的網(wǎng)站項目:FileUploading ,如下 -

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

在設(shè)計視圖中,窗體如下所示:

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塊用于捕獲錯誤,并顯示錯誤消息。

執(zhí)行上面項目,得到以下結(jié)果 -

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