无法上传多个文件

Unable to upload multiple files

我正在使用 ASP.NET MVC 5jquery 最新版本。 我正在尝试使用 jquery fileupload 上传多个文件,但我无法接收多个文件。

查看:

 <input id="fileupload" type="file" multiple="multiple" name="files[]"  >

<script type="text/javascript">
    $(document).ready(function () {
        $('#fileupload').fileupload({
            dataType: 'json',
            url: '/Media/UploadFiles',
            autoUpload: true,
            done: function (e, data) {

            }
        }).on('fileuploadprogressall', function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('.progress .progress-bar').css('width', progress + '%');
        });
    });
</script>

控制器:

 [HttpPost]
        public ContentResult UploadFiles()
        {

            foreach (string file in Request.Files)
            { }
        }

这里 Request.Files 我只收到一个文件。

您上传的文件实际上是一个一个发送的。

您可以更改服务代码

[HttpPost]
public JsonResult UploadFiles()
{
    IList<string> filesSaved = new List<string>();

    foreach (string file in Request.Files)
    {
    HttpPostedFileBase hpf = Request.Files[file];
    if (hpf.ContentLength > 0)
    {
        var fileName = hpf.FileName;
        filesSaved.Add(fileName);
    }
    }

    return Json(new {files = filesSaved}, JsonRequestBehavior.DenyGet);
}

并插入一个断点,您将看到对于您发送的每个文件,请求都经过一次。

问题出在您的客户端代码中。该插件中有一个选项 singleFileUploads 默认为 true,您可以阅读 here.

您可以更改您的客户端代码设置 singleFileUploads: false :

$(document).ready(function () {
        $('#fileupload').fileupload({
            dataType: 'json',
            url: '/Media/UploadFiles',
            autoUpload: true,
            singleFileUploads: false,
            done: function (e, data) {

            }
        }).on('fileuploadprogressall', function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('.progress .progress-bar').css('width', progress + '%');
        });
});

一切都应该按预期工作。