首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 FileUpload 控制項實現檔案上傳完整教學

     編輯:關於ASP.NET

FileUpload vs 舊版 File Field

FileUpload (ASP.NET 2.0 新增) 內建處理 enctype="multipart/form-data",無需手動修改 <form> 標籤,API 更直覺:HasFile、FileName、SaveAs、PostedFile (HttpPostedFile)。舊版 HtmlInputFile 仍可使用但較繁瑣。

完整上傳範例 (C#)

<%@ Page Language="C#" %>
<script runat="server">
protected void Button1_Click(object sender, EventArgs e) {
    if (FileUpload1.HasFile) {
        try {
            string savePath = Server.MapPath("~/Uploads/") + FileUpload1.FileName;
            FileUpload1.SaveAs(savePath);
            Label1.Text = $"檔案:{FileUpload1.FileName}<br/>大小:{FileUpload1.PostedFile.ContentLength} bytes<br/>類型:{FileUpload1.PostedFile.ContentType}";
        } catch (Exception ex) {
            Label1.Text = "錯誤:" + ex.Message;
        }
    } else {
        Label1.Text = "請選擇檔案";
    }
}
</script>
<html><body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" /><br/><br/>
<asp:Button ID="Button1" Text="上傳檔案" OnClick="Button1_Click" runat="server" /><br/><br/>
<asp:Label ID="Label1" runat="server" />
</div></form></body></html>

安全與效能最佳實務

  • 副檔名/MIME 驗證:白名單允許類型,防止上傳可執行檔。
  • 檔案大小限制:web.config <httpRuntime maxRequestLength="10240" /> (KB),配合客戶端檢查。
  • 儲存路徑隔離:存放於 Web 根目錄外,或以亂數重命名避免覆蓋與直接下載。
  • 病毒掃描:企業環境整合防毒引擎掃描後再永久儲存。
  • 大檔分塊上傳:超大檔案建議使用 Silverlight/HTML5 File API 分塊上傳並伺服器端合併。

常見問題排查

  • 權限不足:應用程式集區身分識別需具備上傳目錄寫入權限。
  • 路徑過長:Server.MapPath 結合檔名超過 260 字元,改用短路徑或重命名。
  • 並發衝突:同名檔案同時上傳,加入 GUID 前綴或時間戳記區分。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved