2015-09-25 26 views
0

我想用引導文件輸入與C#控制器。 不管我做什麼,我只能似乎得到控制,接受1個文件(即使選擇了多個文件)引導文件用C#控制器輸入

我的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. 
    } 
+0

如果'Request.Files'也只包含1個文件,你可以檢查'UploadServcePhoto'嗎?如果是,請使用您的瀏覽器的網絡開發工具,或使用Fiddler檢查發送到您的控制器的請求(POST)是什麼。 – Michael

+0

FileInput不會一個接一個地傳輸文件,有效地多次調用您的控制器動作,每個文件一次? –

+1

可能重複,請檢查[此答案](http://stackoverflow.com/questions/25772134/asp-net-mvc-upload-multiple-image-files):) – AnhTriet

回答

1

我有同樣的問題。檢查財產爲@邁克爾提到,它應該包含幾個文件。當你選擇了它,你也應該過濾掉的那些空的名字:

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

我認爲它有事情做異步上傳,插件似乎有一個默認選項張貼在並行異步文件,以便您將收到每個帖子的單個文件。

因此,請嘗試將uploadAsync屬性設置爲false。

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

});

以下是Bootstrap Fileinput的一些官方文檔。 Asynchronous Upload