FormData控制台记录[object FormData]而不是实际文件

时间:2018-03-10 19:02:29

标签: javascript php jquery ajax form-data

我有以下代码,使用ajax上传文件,因为我不想使用表单操作。但我无法这样做。代码是:

Select xml file to upload:
<input type="file" name="fileToUpload" id="uploadFile">
<input type="submit" id="upload_xml" value="Upload Xml">

ajax代码是:

$('#upload_xml').on('click', function() {

var file_data = $('#uploadFile').prop('files')[0];      
var form_data = new FormData();
console.log('hi'+file_data); // this gives [object File]
form_data.append('file', file_data);
console.log('yoyo'+form_data);  // this gives  [object FormData]              
$.ajax({
    url: 'upload.php',
    dataType: 'text',  
    cache: false,
    contentType: false,
    processData: false,
    data: form_data,                         
    type: 'post',
    success: function(response){
        alert(response); 
    }
 });

});

我看到很多关于各种线程的讨论,但没有一个对我有用。我之前做过这个没有任何错误,我不知道错误是什么:(这里我错了。我需要包含任何js文件吗?

2 个答案:

答案 0 :(得分:0)

您需要将 + 替换为您还需要先读取文件&amp;提取其内容

  var file = $('#uploadFile').prop('files')[0];
    var file_data = '';
if (file) {
    var reader = new FileReader();
    reader.readAsText(file, "UTF-8");
    reader.onload = function (evt) {
        file_data = evt.target.result;
    }
    reader.onerror = function (evt) {
        file_data = "error reading file";
    }
}
    var form_data = new FormData();
    console.log('hi',file_data);
    form_data.append('file', file_data);
    console.log('yoyo',form_data.get('file')); 

答案 1 :(得分:0)

使用下面提到的代码:

 for (var pair of formData.entries()) {
        console.log(pair[0] + ", " + pair[1]);
      }