Asp.net-Mvc

Asp.net MVC:上傳多個圖像文件?

  • September 10, 2014

有沒有一個很好的例子來說明如何在 asp.net mvc 中上傳多個圖像文件?我知道我們可以使用 HttpPostedFileBase 上傳一個文件。有沒有辦法通過點擊一個按鈕上傳多個文件?

我之前在 webform 的 ajaxtoolbox 中使用了文件上傳,並且喜歡它的工作原理。MVC中有類似的方法嗎?或者,是否有現有的控制項可以很好地做到這一點?免費控制更好,但即使花費一些美元也可以。

謝謝

使用這個jQuery 外掛

只需包含外掛 js 文件,創建標籤:

<input type='file' multiple id='fileUpload' name="files[]" data-url="@Url.Action("Upload","Home")" />

(除了 IE9 不允許在選擇對話框中選擇多個文件)

添加一些 JavaScript:

$(function () {
   $('#fileUpload').fileupload({
       dataType: 'json',
       done: function (e, data) {
           $.each(data.result.files, function (index, file) {
               $('<p/>').text(file.name).appendTo(document.body);
           });
       }
   });
});

在控制器操作中,只需檢查 Request.Files 並做任何你想做的事情。這是一個很好的文件

[HttpPost]
public JsonResult Upload() 
{
   foreach (var file in Request.Files)
   {
       if(file.ContentLength > 0)
       {
           file.SaveAs(Server.MapPath("~/Upload/" + file.FileName));
       }
   }

   return Json(new { result = true });
}

您可以使用 http 動詞實現一個操作,POST以接收HttpPostedFileBase並保存所有文件的集合,例如:

[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files) 
{
   foreach (var file in files)
   {
       file.SaveAs(Server.MapPath("~/Update/" + file.FileName));
   }

   return View();
}

或者,你可以閱讀Request.Files並做同樣的工作,

[HttpPost]
public ActionResult Upload() 
{
   foreach (var file in Request.Files)
   {
       file.SaveAs(Server.MapPath("~/Update/" + file.FileName));
   }

   return View();
}

也可以看看

引用自:https://stackoverflow.com/questions/25772134