22

is there a good example of how to upload multiple image files in asp.net mvc? I know we can use HttpPostedFileBase to upload one file. Is there a way to upload multiple files by clicking one button?

I used file upload in ajaxtoolbox in webform before and like how it works. Is there a similar way in MVC? or, is there a existing control that can do this well? free control is better, but it is ok even it costs some $.

Thanks

3
  • 1
    we used plupload.com at my last job for multiple uploads Commented Sep 10, 2014 at 18:26
  • is there a simple example of how to use it in asp.net MVC? thanks. Commented Sep 10, 2014 at 18:47
  • 1
    I don't have access to that code base anymore. Here is an example I found googling pluploadmvc4demo.codeplex.com Commented Sep 10, 2014 at 19:42

4 Answers 4

29

You could implement an action with POST http verb to that receive a collection of HttpPostedFileBase and save all files, for sample:

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

Alternatively, you could read Request.Files and do the same job,

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

See Also

Sign up to request clarification or add additional context in comments.

1 Comment

I tried to upload 396 csv files and it's working fine but when I tried to upload 484 files it's not working anymore what I am missing? I already edited the web.config based on this site
6

Use this jQuery plugin

just include plugin js files, create tag:

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

(Except IE9 it is not allowing select multiple files in select dialog)

Add some JavaScript:

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

In controller action just check Request.Files and do whatever you want. Here is a good documentation

[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 }); } 

1 Comment

using this plugin, a basic example can be found here : github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin
2

I'm using this one. https://www.fyneworks.com/jquery/multiple-file-upload/

<input type="file" name="file" class="multiple" /> [HttpPost] public ActionResult Upload() { if (Request.Files.Count > 0) { foreach(var file in Request.Files) { } } return View(); } 

Comments

1

Some of the basic bits required for file uploads

Notice keyword: multiple in input element AND multipart in form element

HTML Side

@using (Html.BeginForm("MyUpload", "MyController", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input type="file" name="myFiles" multiple /> <button class="btn btn-default">Upload</button> } 

Controller

[HttpPost] public ActionResult MyUpload(IEnumerable<HttpPostedFileBase> myFiles) { foreach (var file in myFiles) { if (file != null && file.ContentLength > 0) { //handle files; } } return View(); } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.