我想这个好几天了!没有什么似乎为别人工作,为我工作!我现在必须完成它。通过ajax上传文件
所以这是很基本的:
<form method="POST" enctype="multipart/form-data">
<input type="file" name="browseFile" id="photo" />
<input type="submit" id="send" />
</form>
正如你可以看到,有一个HTML表单与文件的输入和一个提交按钮。 对于我想要做的,我需要从输入字段立即发送文件后,将其值更改为服务器。
让我们跳过一部分事件监听器和验证。
这是JavaScript,这应该是能够获得输入字段的值,并将其发送到服务器:
var inputFilePhoto = document.getElementById("photo");
var imageFile = inputFilePhoto.files[0];
var formData = new FormData();
formData.append("file", imageFile);
$.ajax({
type: "POST",
url: "ajax.php",
data: formData,
contentType: false,
processData: false,
success: function (output) {
document.write(output);
alert("OK");
},
error: function() {
alert("Error");
}
});
正如你所看到的,我使用的是FORMDATA对象,这是几天前对我来说是新的。它适用于文本字段等,但不适用于文件输入字段。我还尝试将整个表单应用于此对象(new FormData($("form")[0])
),但是这又一次忽略了类型为“file”的输入字段,就好像它们不存在一样。
回到上面的例子:ajax.php没有做什么比调试$ _POST。因此,这是ajax.php:
<?php
echo '<pre>';
var_dump($_POST);
echo '</pre>';
这样做的结果是一个空数组array(0) { }
技术细节:测试在Chrome V48在Mac OS X 10.11,使用jQuery 2.2.0
我希望有人能最终帮助我,我接受使用js插件的解决方案。
哦,我的上帝,非常感谢你!我为一个客户做了这件事,并承诺昨天会做。谢谢,我爱你! – Stringering