我尝试上传图片文件并将其存储在我的服务器上,并指向存储在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)时会打印
有什么想法吗?我已经查看了负载,但无法解决这个问题。
我正在和我大学的一位教授谈话,他说&#34; multipart / form-data&#34;可能是一种痛苦的工作,并说我可能更好地使用PUT?
答案 0 :(得分:1)
此问题有两件事需要提及。
首先,您需要在客户端进行一些额外的工作,在javascript中传递多部分数据 - 我怀疑这是您的老师可能在谈论的内容。为此,我建议你this SO answer。
其次,在服务器端,与所有其他表单数据不同,文件不在$ _GET,$ _POST或$ _REQUEST数组中,而是在自己的$_FILES array中。我鼓励您阅读此内容,但基本上,PHP将在临时位置上传,您应该将文件复制到它的最终位置 - 然后将 路径保存到您的数据库中
希望这有帮助!