我有以下代码,使用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文件吗?
答案 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]);
}