2017-07-25 194 views
-1

我正在发送一些数据 - 包括文件到一个php,如果我只是通过HTML并发布所有工作正常,但不是尝试上传它与Ajax时,我不知道为什么。使用AJAX将文件上传到PHP

$scope.aceptar = function() {   
    var form = $('form');   
    var formData = new FormData(form); 
    var file_1 = document.getElementById('file_1').files[0]; 
    var file_2 = document.getElementById('file_2').files[0]; 
    var file_3 = document.getElementById('file_3').files[0]; 

    formData.append(file_1.name, file_1); 
    formData.append(file_2.name, file_2); 
    formData.append(file_3.name, file_3); 

    $.ajax({      
     method: "post", 
     url: "http:dsfs43r4.php",      
     data: formData, 
     processData: false,         
     async: false, 
     success: function(data) {   
      console.log(data); 
     },  
     error: function(data) { 
      alert("error"); 
     }  
    }); 
} 

而且在PHP我只能随声附和$ _FILES,但我发现

array(0) {} 

为Chrome的控制台上的答案。

编辑:

如果我只是做:

<form id="theForm" enctype="multipart/form-data" action="http://ge/_m.php" method="post">  

<button type="submit" ng-click="aceptar()">Aceptar</button> 
</form> 

我得到这个$ _POST - 这是我期待:

阵列(15){ [“Lote”] = > string(8)“tyrrtyrw” [“Kg__muestra”] = > 串(0) “” [ “Kg__ceb__aprovechable”] = > 串(0) “” [ “ -/50_mm”] = > 串(0) “” [ “50/60_mm”] = > 串(0) “” [ “60/75_mm”] = > 串(0) “” [ “75/90_mm”] = > 串(0) “” [ “90/+ _毫米”] = > 串(0) “” [ “Kg__destrío”] = > 串(0) “” [ “Kg__podridos”] = > 串(0) “” [ “Kg__merma”] = > 串(0) “” [ “Kg__podrido_interno”] = > 串(0) “” [ “Kg__germinación_int__1/ 3”] = > 串(0 ) “” [ “Kg__germinación_int__2/ 3”] = > 串(0) “” [ “Cantidad_en_Kg _”] = > 串(0) “” } HUBO未problema人苏比尔洛斯ficheros。

所以IDK为什么通过ajax做不到这个结果。

+0

什么是请求的内容类型标题值?它应该是multipart/form-data。 –

+2

我注意到的第一件事是'http:dsfs43r4.php' atleast使它成为'http:// yourdomain.com/dsfs43r4.php'。 –

+0

你的PHP文件中没有** $ _ FILES GLOBAL **在这种情况下,只需** var_dump($ _POST)**即可查看您的数据 –

回答

1

下面是我所做的启用AJAX表单上传,调整它以适应它,它应该为你做的工作!在我的例子中带有文件的元素是#evidence

   var jform = new FormData(); 
       jform.append('supply_id',supply_id); 
       jform.append('fuel_usage',$('#fuel_usage').val()); 
       jform.append('cost',$('#cost').val()); 
       jform.append('currency',$('#currency').val()); 
       jform.append('reading',$('#reading').val()); 
       jform.append('data_source',$('#data_source').val()); 
       jform.append('date_from',$('#date_from').val()); 
       jform.append('date_to',$('#date_to').val()); 
       jform.append('evidence',$('#evidence').get(0).files[0]); 
       jform.append('comments',$('#comments').val()); 

       $.ajax({ 
        url: '/your-form-processing-page-url-here', 
        type: 'POST', 
        data: jform, 
        dataType: 'json', 
        mimeType: 'multipart/form-data', 
        contentType: false, 
        cache: false, 
        processData: false, 
        success: function(data, status, jqXHR){ 
         alert('Hooray! All is well.'); 
         console.log(data); 
         console.log(status); 
         console.log(jqXHR); 

        }, 
        error: function(jqXHR,status,error){ 
         // Hopefully we should never reach here 
         console.log(jqXHR); 
         console.log(status); 
         console.log(error); 
        } 
       });