2014-09-21 28 views
1

我试图在单个输入字段中上传多个文件。到目前为止,代码的作品,但它只是发送第一个文件到upload.php文件。我正在使用jQuery。Ajax上传只会将第一个文件传递给php文件

HTML:

<input id="carica" type="file" name="carica[]" multiple="true"/> 
<button type="button" id="upload_sub" class="button">Carica</button> 

的JavaScript:

$("#upload_sub").click(function() { 

     $.ajax({ 
      url: "./src/upload.php", 
      type: "POST", 
      contentType: false, 
      processData: false, 
      data: function() { 
       var data = new FormData(); 
       data.append("carica", $("#carica").get(0).files[0]); 
       return data; 
       // Or simply return new FormData(jQuery("form")[0]); 
      }(), 
      error: function(_, textStatus, errorThrown) { 
       alert("Error"); 
       console.log(textStatus, errorThrown); 
      }, 
      success: function(response, textStatus) { 
       alert("Success"); 
       console.log(response, textStatus); 
      } 
     }); 
    }); 

PHP:

print_r ($_FILES); 

输出:

Array 
(
    [carica] => Array 
     (
      [name] => prova.pdf 
      [type] => application/pdf 
      [tmp_name] => /tmp/phpvIlTeL 
      [error] => 0 
      [size] => 7234 
     ) 

) 
success 
+0

你忘了一个循环。 – Dorvalla 2014-09-21 14:32:03

+0

是的,正是这样!顺便说一下,下面的答案显示了我的问题的准确解决方案。 – Dankorw 2014-09-21 14:37:21

回答

1

遍历整个文件列表和发送的所有文件

 data: function() { 
      var data = new FormData(); 
      var files = $("#carica").get(0).files; 
      for (var i = 0; i < files.length; i++){ 
       data.append("carica[]", files[i]); 
      } 
      return data; 
     }(), 
+0

保存我的作品。非常感谢你,我认为'.get(0).files [0]'有问题,但是由于我对jQuery的知识非常有限,我不知道如何行动。 – Dankorw 2014-09-21 14:17:54