主選單

2017-05-13

C#:FileUpload 多檔案上傳 (upload multiple files)

HTML5 只需要加入 multiple 即可支援多檔上傳,但要看瀏覽器是否支援。(IE10、IE11 後的版本)
<input name="uploads[]" type=file multiple>



ASP.NET 3.5 的寫法,增加 multiple 屬性。
<asp:FileUpload ID="FileUpload1" runat="server" multiple="multiple" />
<asp:Button ID="btnUpload" Text="Upload" runat="server" OnClick="btnUpload_Click" />
後端程式碼如下,檔案會存檔到網站根目錄下的 Uploads 資料夾:
protected void btnUpload_Click(object sender, EventArgs e)
{
    for (int i = 0; i < Request.Files.Count; i++)
    {
        HttpPostedFile postedFile = Request.Files[i];
        if (postedFile.ContentLength > 0)
        {
            string fileName = Path.GetFileName(postedFile.FileName);
            postedFile.SaveAs(Server.MapPath("~/Uploads/") + fileName);
        }
    }
}


ASP.NET 4.5 後版本的 FileUpload 元件支援 AllowMultiple 屬性。
<asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true" />
<asp:Button ID="btnUpload" Text="Upload" runat="server" OnClick="btnUpload_Click" />
後端程式碼如下,PostedFiles 也是 .NET 4.5 開始才有的成員。
protected void btnUpload_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        foreach (var postedFile in FileUpload1.PostedFiles)
        {
            string fileName = Path.GetFileName(postedFile.FileName);
            postedFile.SaveAs(Server.MapPath("~/Uploads/") + fileName);
        }
    }
}
判斷檔案型態:postedFile.ContentType == "image/jpeg"
判斷檔案大小:postedFile.ContentLength < 102400


參考資料:https://www.aspsnippets.com/Articles/Upload-multiple-files-with-ASPNet-45-FileUpload-control-in-Visual-Studio-2012-and-2013.aspx


1 則留言:

  1. 發現上傳多檔, 會有不同檔名, 但內容均相同情形, 如何解.

    回覆刪除