2017-07-25 193 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); 
        } 
       });