无法上传多个文件
Unable to upload multiple files
我正在使用 ASP.NET MVC 5
、jquery
最新版本。
我正在尝试使用 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 + '%');
});
});
一切都应该按预期工作。
我正在使用 ASP.NET MVC 5
、jquery
最新版本。
我正在尝试使用 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 + '%');
});
});
一切都应该按预期工作。