使用C#Controller

时间:2015-09-25 11:43:57

标签: c# asp.net-mvc twitter-bootstrap fileinputstream

我正在尝试将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. 
    }

2 个答案:

答案 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