2013-08-21 36 views
13

當啓用programmatic file upload使用jQuery-File-Upload plugin啓用組塊功能時,我無法獲取多個要發送的文件。分塊編程文件上傳:僅發送第一個文件

我正在通話如下:

fileUploadWidget.fileupload('send', 
{ 
    files: filesList 
}) 

filesList是文件對象的列表。

此外,我已經設置了maxChunkSize並將singleFileUploads設置爲true(我也嘗試了false),如Options wiki page所示。

有沒有人得到這個工作的任何成功?

更新:

我已經在GitHub上做出了issue對於這個問題,這裏是從作者的響應:

[...]分塊上傳僅支持每個請求一個文件。 也就是說,您仍然可以同時上傳多個文件塊,但您必須發送多個請求。


我們的解決方案:

如已經評論,以及我們落得這樣做,是對文件發送的一個循環,widgetsequentialUploads設置初始化爲true(你「會想這取決於你的後臺是如何配置的):

// for illustration only 
// does not do anything with the returned jqXHR objects 
for (i = 0; i < files.length; i++) { 
    widget.fileupload('send', { files: files[i] }); 
} 
+3

您是否嘗試過使用[Plupload(http://www.plupload.com/)代替?我最近做了很多與多個文件上傳的工作,發現插件正是我所需要的。 –

回答

0
foreach(files in filesList.length) 
{ 
    fileUploadWidget.fileupload('send', 
    { 
     files:filesList 
    } 
} 

也許不正是正確的格式,但你的想法:)

0

你應該這樣做:

$('collection object').each(function() { 
$(this).fileupload({'send', 
    files: $(this) 
}); 
}); 
2

如果使用C#作爲後端,你可以試試這個(客戶端, JQuery的):

$("#btnUpload").click(function() { // btnUpload is the ID of any button for upload 
      var formdata = new FormData(); //FormData object 
      var fileInput = document.getElementById('fileInput'); 
      //Iterating through each files selected in fileInput 
      for (i = 0; i < fileInput.files.length; i++) { 
       //Appending each file to FormData object 
       formdata.append(fileInput.files[i].name, fileInput.files[i]); 
      } 
      //Creating an XMLHttpRequest and sending 
      var xhr = new XMLHttpRequest(); 
      xhr.open('POST', '/UploadMethod'); // UploadMethod is your back-end code 
      xhr.send(formdata); 
      xhr.onreadystatechange = function() { 
       if (xhr.readyState == 4 && xhr.status == 200) { 
        // alert("uploaded"); 
        } 
      } 

     }); 

,然後在你UploadMethod做這樣的事情:(服務器端,C#)

public void Upload() 
     { 
      for (int i = 0; i < Request.Files.Count; i++) 
      { 
       HttpPostedFileBase file = Request.Files[i]; //Uploaded file 
       //Use the following properties to get file's name, size and MIMEType 
       int fileSize = file.ContentLength; 
       string fileName = file.FileName; 
       string mimeType = file.ContentType; 
       System.IO.Stream fileContent = file.InputStream; 
       //To save file, use SaveAs method 
       var appPath = HostingEnvironment.ApplicationPhysicalPath + "Documents/" + "_" + DateTime.Now+ fileName; 

       file.SaveAs(appPath); //File will be saved in Documents folder 
       } 
     } 
0

你基本上是在一個循環中發送它們。

0

我覺得問題是從你的html。使用類似這樣的文件中的字段

<input type='file' name="pics[]" /> 

name屬性應該數組,那麼你可以用循環得到後端