我正在尝试上传图像文件并将其存储在我的服务器上,并使用存储在 Mysql 数据库上的文件位置的路径。我正在使用 ajax 请求发送数据,但访问文件的任何部分时遇到严重问题:
PHP
<input type="file" id="upload_file" name='upload_file' style="width: 0px;height: 0px;">
调用此 JavaScript
function upload_photo(user_id) {
var file = document.getElementById('upload_file')
/* Create a FormData instance */
var formData = new FormData(form);
formData.append('user_id', user_id)
formData.append('file', file)
request = new ajaxRequest()
request.open("POST", "edit_details.php", true)
request.setRequestHeader("Content-type", "multipart/form-data")
request.onreadystatechange = function () {
if (this.readyState == 4)
if (this.status == 200)
if (this.responseText != null)
O('page').innerHTML = this.responseText
}
request.send(formData)
}
请求负载如下所示:
------WebKitFormBoundaryFA8fI4XH99ES61F6
Content-Disposition: form-data; name="file"
[object HTMLInputElement]
------WebKitFormBoundaryFA8fI4XH99ES61F6
Content-Disposition: form-data; name="user_id"
1001
------WebKitFormBoundaryFA8fI4XH99ES61F6--
但是当我调用 var_dump($_REQUEST) 时它会打印
有什么想法吗?我已经查看了很多负载,但无法解决这个问题。
我正在和我大学的一位教授交谈,他说“multipart/form-data”使用起来很痛苦,并说我可能更好地使用 PUT?
最佳答案
关于此问题,这里有两件事需要提及。
首先,您需要在客户端用 JavaScript 进行一些额外的工作,以传递多部分数据 - 我怀疑这就是您的老师可能一直在谈论的内容。为此,我建议您引用this SO answer .
其次,在服务器端,与所有其他表单数据不同,文件不在 $_GET、$_POST 或 $_REQUEST 数组中,而是在它们自己的 $_FILES array 中。反而。我鼓励您阅读此内容,但基本上,PHP 将在临时位置上传,您应该将文件复制到其最终位置 - 然后将该路径保存到数据库中。
希望这有帮助!
关于javascript - 访问文件数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42283128/