用c#控制器引导文件输入

本文关键字:文件 输入 控制器 | 更新日期: 2023-09-27 18:14:41

我试图使用Bootstrap FileInput与c#控制器。无论我做什么,我似乎只能让控制器接受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#控制器

        [HttpPost]
    public void UploadSerivcePhoto(IEnumerable<HttpPostedFileBase> FilesInput)
    {
    //  only 1 file ever gets put in FilesInput. 
    }

用c#控制器引导文件输入

我认为这与异步上传有关,这个插件似乎有一个默认的选项来异步并行发布文件,所以你每次发布一个文件。

尝试将uploadAsync属性设置为false

$('#FilesInput').fileinput({
language: 'eN',
uploadAsync: 'false', 
uploadUrl: '/members/UploadSerivcePhoto',
allowedFileExtensions: ['jpg', 'png', 'gif'],

});这里是Bootstrap Fileinput的一些官方文档。异步上传

我也有同样的问题。检查@Michael提到的Request.Files属性,它应该包含几个文件。检查时,还应该过滤掉名称为空的

List<HttpPostedFileBase> allFiles = Enumerable.Range(0, Request.Files.Count)
    .Select(x => Request.Files[x])
    .Where(x => !string.IsNullOrEmpty(x.FileName))
    .ToList();