Asp.net MVC:如何上传多个图像文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

有没有一个如何在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 });
}
用户回答回答于

可以使用POSThttp动词实现一个动作,以接收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();
}

另见

扫码关注云+社区