2012-12-26 72 views
0

我有一個表格,我必須添加多個附件。這個功能應該是動態的,就像用戶可以根據需要選擇儘可能多的文件並取消任何文件。多個附件到表格

在前端,我創建了一個文件輸入元素,並在它的「平變化」,我將用不同的ID和另一個同名的文件輸入元素。我使用的名稱是「attachment []」,因爲我需要將附件作爲數組發送。

提交按鈕調用一個javascript函數,我正在使用jquery獲取參數並創建一個formdata。功能片段是

function send() 
{ 
var form = document.getElementById("composeForm"); 

var formElements = form.elements; 
var formdata; 
for (x in formElements) 
{ 
    //each element that has type='file' and value is 0 is what we want to delete later 
    if(formElements[x].type=='file'&&formElements[x].value.length!=0) 
    { 
     console.log(document.getElementById(formElements[x].id).files[0]); 
    formdata = new FormData(); 
    var file = document.getElementById(formElements[x].id).files[0]; 
    formdata.append("attachment[]", file); 
    } 
} 

if (!formdata) 
{ 
    formdata = new FormData(); 
} 

formdata.append("subject", document.getElementById("subjectInput").value); 
if (formdata) { 
    $.ajax({ 
     url: "../ws/attach.php", 
     type: "POST", 
     data: formdata, 
     processData: false, 
     contentType: false, 
     success: function (res) { 
      alert(res); 
     } 
    }); 
} 

return false; 
} 

但問題是,它總是發送參數中的最後添加的文件。在顯示所有文件上面包含的console.log即

File {webkitRelativePath: "", lastModifiedDate: Thu Dec 06 2012 03:01:55 GMT+0530 (India Standard Time), name: "backup.txt", type: "text/plain", size: 10584} 
File {webkitRelativePath: "", lastModifiedDate: Wed Dec 19 2012 16:24:36 GMT+0530 (India Standard Time), name: "acknowledgement.pdf", type: "application/pdf", size: 163435} 

但鉻元素檢測表明,正在發送的唯一參數是

------WebKitFormBoundaryVYMwpCkBb8zK6tg0 
Content-Disposition: form-data; name="attachment[]"; filename="acknowledgement.pdf" 
Content-Type: application/pdf 

有什麼很想念?

+0

你應該使用'變種x'。沒有必要使'x'全球! – ThiefMaster

回答

0

這是我犯的一個愚蠢的錯誤。該錯誤每次:(

formdata = new FormData(); 
初始化FORMDATA是由於

感謝反正他們誰上花費的時間。