我知道这已经被问了很多......但是我遇到的答案都没有帮助。 这是我以前做过很多次的事情......但是在这个场合,我遇到了一个问题。
我正在尝试通过ajax上传zip文件,而不是提交表单,只是字段。我将文件附加到formdata对象...但formdata始终为空(在我通过ajax发送之前检查它)。 $ _FILES数组服务器端也总是空的。
任何人都可以看到什么是错的,我尝试了很多变化...... 如果我是console.log(jQuery("#file_import")[0] .files [0]);我看到了文件数据。
var fileInput = jQuery("#file_import")[0];
var formData = new FormData();
formData.append("zipfile",fileInput.files[0]);
jQuery.ajax("/whatever/url", {
method: "POST",
data: formData,
dataType: "json",
cache: false,
contentType: false,
processData: false,
onSuccess: function(response){
alert("whatever...");
}
});
提前致谢。 肖恩
答案 0 :(得分:1)
当你说" formdata总是空的时候,"您是要尝试使用formdata.entries()
进行检查,还是使用formData.get('zipfile')
?我认为只有其中的第二个才有效。
编辑:这是我的确切代码,客户端和服务器端。
$(document).ready(function() {
$('#start').click(function() {
var fileInput = $("#file_import")[0];
var formData = new FormData();
formData.append("zipfile",fileInput.files[0]);
$.ajax("test.php",{
method: "POST",
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(response){
$('#output').html(response);
}
});
});
});
HTML:
<input type="file" id="file_import"/>
<button id="start">Start</button>
<div id="output">
</div>
PHP:
<?php
print_r($_FILES);
$t = $_FILES['zipfile'];
$date = new DateTime();
$d = $date->format('Y-m-d_H-i-s');
move_uploaded_file($t['tmp_name'], "asdf_$d.zip");
?>