2017-08-04 156 views
0

我做了很多o測試通過jQuery ajax上傳文件,但我仍然有這個錯誤:400錯誤的請求

這是我的代碼:

function createDatasetSync() { 
 
    var form = $('#fileUploadForm')[0]; 
 
    var data = new FormData(form); 
 
    $.ajax({ 
 
     type: 'POST', 
 
     url: '<remote API to call>', 
 
     beforeSend: function(xhr) { 
 
      xhr.setRequestHeader("Authorization", "Bearer " + <myToken>); 
 
      xhr.setRequestHeader("Content-Type", "multipart/form-data"); 
 
     }, 
 
     data: data, 
 
     cache: false, 
 
     contentType: false, 
 
     processData: false, 
 
     timeout: 600000, 
 
     success: function (data) { 
 
      console.log(data); 
 
     }, 
 
     error: function (data) { 
 
      console.log("ERROR: " , data); 
 
     } 
 
    }); 
 
} 
 

 
$(document).ready(function() { 
 
    $("#btnSubmit").click(function (event) { 
 
     event.preventDefault(); 
 
     createDatasetSync(); 
 
    }); 
 
});
<html> 
 
    <body> 
 
     <form method="POST" enctype="multipart/form-data" id="fileUploadForm"> 
 
      <input type="file" name="files"/><br/><br/> 
 
      <input type="submit" value="Submit" id="btnSubmit"/> 
 
     </form> 
 
    </body> 
 
</html>

我有一個.zip文件發送到遠程Web服務。

這是我試圖複製捲曲電話:

curl -X POST -H "Authorization: Bearer myTOKEN" -H "Cache-Control: no-cache" -H "Content-Type: multipart/form-data" -F "[email protected]:\myFile.zip" -F "type=image" URL_to_call 

在此先感謝。

+0

首先,「http status」爲400表示您嘗試向服務器發送請求的錯誤負載。你能驗證'data'的格式是什麼嗎?這會給你一個洞察問題,你會沒事 – Rowland

+0

我試着用不同的文件類型:.jpeg .zip .txt和我有同樣的錯誤。 我需要上傳一個.zip文件 –

回答

0
$("#btnSubmit").click(function (event) { 
      event.preventDefault(); 
      createDatasetSync();    
    }); 

此代碼在提交按鈕上無效。更改按鈕類型屬性爲submit

+0

Hi Karan,謝謝你的迴應。我改變類型從提交到按鈕,但我有同樣的結果:( createDatasetSync()被稱爲但具有相同的錯誤:400錯誤的請求 –

+0

是否有控制檯中的任何錯誤 –

+0

有400(錯誤的請求){消息:不好的請求},但是如果替換爲標題 「Content-Type」,「multipart/form-data」with 「Content-Type」,「multipart/form-data; boundary =」+ data.boundary 錯誤消息更改爲{「message」:「此類請求需要'type'參數。」} –