我现在尝试这几天了!没有什么对他人有用,对我有用!我现在必须完成它。
所以这是非常基本的:
<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])
),但是 - 再次 - 忽略了类型&#34; file&#34;的输入字段。就好像它们不存在一样。
回到上面的例子:ajax.php没有调试$ _POST。所以这是ajax.php:
<?php
echo '<pre>';
var_dump($_POST);
echo '</pre>';
结果是一个空数组array(0) { }
技术详情:使用jQuery 2.2.0在Mac OS X 10.11上的Chrome v48上测试
我希望有人能最终帮助我,我接受使用js插件的解决方案。