javascript - 访问文件数据时出现问题

标签 javascript php html mysql ajax

我正在尝试上传图像文件并将其存储在我的服务器上,并使用存储在 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/

相关文章:

javascript - MVC3 AJAX 将数据传递到 Controller 。已提交两次

javascript - 将 HTML 附加到 Javascript Fireunit 测试

php - 如何在 wordpress 导航中不影响子项的情况下突出显示处于事件状态的父项?

html - 样式属性在设计时不适用于 AngularJS 绑定(bind)

javascript - 我如何根据这个 javascript 库访问 usernameField 并将其值更改为电子邮件?

javascript - 销毁 JSON Web token

php - 如何在从 MySQL 检索的表行中添加值?

php - 获取逗号分隔字符串中包含的行

javascript - 如何为所有包含文本的元素添加特定的 CSS 属性

php - 处理表单处理的最佳实践