2014-05-21 41 views
0

我想申請AJAX上傳的圖片,並給他們的名字:上傳圖片functon的jQuery的檢查由陣列中的所有文件上傳一個文件後,每到一站上傳

JS部分是:

function sendFile(file) { 
$.ajax({ 
    type: 'post', 
    url: '@routes.CommonController.uploadhandler("")' + file.name, 
    data: file, 
    success: function() { 
     return true; 
     }, 
    error: function(){ 
     return false; 
     }, 
    xhr: function(){ 
     // get the native XmlHttpRequest object 
     var xhr = $.ajaxSettings.xhr() ; 
     // set the onprogress event handler 
     xhr.upload.onprogress = function(evt){ console.log('progress', evt.loaded/evt.total*100) } ; 
     // set the onload event handler 
     xhr.upload.onload = function(){ console.log('DONE!') } ; 
     // return the customized object 
     return xhr ; 
     }, 
    processData: false, 
    contentType: file.type 
    }); 
} 

該文件列表是FileList對象。它應該是:文件列表{0:文件,1:文件,長度:2,項目:函數}

上傳每一個畫面功能的管理是:

$("#px-submit").click(function(event){ 
    var arrayfiles=[]; 
    var filelist=$("#filename").prop("files"); 
    for (var i = 0; i < filelist.length; i++) { 
     arrayfiles[i] = filelist[i]; 
    } 
    console.log("arrayfiles:", arrayfiles); 
var allsuccess=arrayfiles.every(function(element, index, array) { 
    console.log("sending:", element.name); 
    var r=sendFile(element); 
    return r; 
    }); 
if(allsuccess){ 
    $("form").reset; 
    alert("All your pictures are already uploaded!"); 
}else{ 
    $("form").reset; 
    alert("Some error during uploading pictures, you should upload the picture again"); 
} 

予改變的fileList到數組中,然後使用Array.every嘗試確認每個文件已經上傳。但當文件上傳時它總是停止。爲什麼會這樣?以及如何更改它以確認已經上傳的2個或更多文件?

回答

0

有幾件事情要考慮:

var filelist=$("#filename").prop("files"); 

什麼是filelist變量應該代表,什麼是$("#filename").prop("files")回來?我會假設它正在返回一個字符串,在這種情況下,你正在遍歷一個字符串。

你的for循環看起來有些奇怪,它沒有終止條件:

for (var i = 0; f = filelist[i]; i++) { 
    arrayfiles[i]=f; 
} 

我可能會考慮重新編寫for循環類似下面(假定filelist是一個數組):

for (var i = 0; i < filelist.length; i++) { 
    arrayfiles[i] = filelist[i]; 
} 
+0

該文件列表是FileList對象。它應該是:FileList {0:File,1:File,length:2,item:function} – user504909

+0

循環終止,因爲if filistlist [3](假定只有兩個元素),它返回undefined並且test爲true或錯誤。該javascript將被視爲虛假。它和你寫的一樣。 – user504909

相關問題