无法上传多个文件

时间:2015-09-30 07:17:56

标签: c# asp.net-mvc file-upload jquery-file-upload

我正在使用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我只收到一个文件。

1 个答案:

答案 0 :(得分:2)

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

您可以更改服务代码

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

并且一切都应该按预期工作。