我正在尝试将Bootstrap FileInput与C#Controller一起使用。 无论我做什么,我似乎只能让控制器接受1个文件(即使选择了多个文件)
我的HTML:
<form enctype="multipart/form-data" method="post">
<label>Upload Photo </label>
<input id="FilesInput" name="FilesInput" type="file" multiple>
</form>
我的Javascript:
$('#FilesInput').fileinput({
language: 'eN',
uploadUrl: '/members/UploadSerivcePhoto',
allowedFileExtensions: ['jpg', 'png', 'gif'],
});
和我的MVC C#Controller
[HttpPost]
public void UploadSerivcePhoto(IEnumerable<HttpPostedFileBase> FilesInput)
{
// only 1 file ever gets put in FilesInput.
}
答案 0 :(得分:1)
我有同样的问题。查看@Michael提到的Request.Files
属性,它应包含多个文件。当你检查它时,你也应该过滤出空名称的那些:
List<HttpPostedFileBase> allFiles = Enumerable.Range(0, Request.Files.Count)
.Select(x => Request.Files[x])
.Where(x => !string.IsNullOrEmpty(x.FileName))
.ToList();
答案 1 :(得分:1)
我认为它与异步上传有关,该插件似乎有一个默认选项,可以并行异步发布文件,因此每个帖子都会收到一个文件。
因此,请尝试将uploadAsync属性设置为false。
$('#FilesInput').fileinput({
language: 'eN',
uploadAsync: 'false',
uploadUrl: '/members/UploadSerivcePhoto',
allowedFileExtensions: ['jpg', 'png', 'gif'],
});
以下是Bootstrap Fileinput的一些官方文档。 Asynchronous Upload