Jquery 1.10 ajax 文件上传表单数据问题
Jquery 1.10 ajax file upload formdata issue
我知道这个问题被问了很多....但是 none 我遇到的答案很有帮助。
这是我以前做过很多次的事情......但是这次,我遇到了问题。
我正在尝试通过 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...");
}
});
提前致谢。
肖恩
当您说 "the formdata is always empty," 时,您是在尝试使用 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");
?>
我知道这个问题被问了很多....但是 none 我遇到的答案很有帮助。 这是我以前做过很多次的事情......但是这次,我遇到了问题。
我正在尝试通过 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...");
}
});
提前致谢。 肖恩
当您说 "the formdata is always empty," 时,您是在尝试使用 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");
?>