【发布时间】:2019-11-14 15:10:22
【问题描述】:
我正在开发一个简单的脚本来通过 AJAX 上传文件,但是在表单提交之后,变量 $_FILES 是完全空的,虽然文件存在于 php://input 中,但是没有简单的方法来仅提取文件.有人知道这个问题的原因和/或解决方案吗?
我检查了所有常见的解决方案。 enctype="多部分/表单数据" 临时文件夹的权限 表单标签关闭 双引号 以及 JS 中文件输入的输出
没有什么能解决我的问题。
红色 这不是 jquery,我在 24 小时内都没有找到重复项。所以请不要标记为重复,除非你确定它是一个。
HTML
<form action="upload.php" method="POST" enctype="multipart/form-data" id="testf">
<input type="file" name="file" accept=".jpg">
<input type="submit" value="Skicka">
</form>
JavaScript
let data = document.querySelector("#testf");
data.onsubmit = function() {
var http = new XMLHttpRequest();
http.open("upload.php", data.action);
http.onreadystatechange = function () {
console.log(http.response);
}
http.setRequestHeader("Content-type", data.enctype);
http.send(new FormData(data));
event.preventDefault();
return false;
}
PHP
<?php
var_dump($_FILES);
?>
这应该打印我文件的内容,但是
array(0) {}
是我所得到的。 请求负载是:
------WebKitFormBoundaryZVGq8suqFUUSFDtW
Content-Disposition: form-data; name="file"; filename="david.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryZVGq8suqFUUSFDtW--
【问题讨论】:
-
OP 没有使用 jQuery。
-
不重复。用 js 编写,而不是 jquery。
标签: javascript php ajax