PHP在JavaScript文件上传时获取空$ _FILES var

时间:2017-02-01 12:28:05

标签: javascript php

我正试图将文件从js上传到像这样的

        var formData = new FormData();
        formData.append('file', uploadedFile);

        var request = new XMLHttpRequest();

        request.onload = function () {
            if (request.readyState == 4) {
                var response = JSON.parse(request.responseText);
                console.log(response);
            }
        };

        request.open('POST', settings.restUri + 'files');
        request.setRequestHeader("Content-Type", "multipart/form-data");
        request.send(formData);

结果我的请求有效负载看起来像这样

            ------WebKitFormBoundaryRl1Q67A1DDBjvKCU
            Content-Disposition: form-data; name="file"; filename="user.svg"

            Content-Type: image/svg+xml


            ------WebKitFormBoundaryRl1Q67A1DDBjvKCU--

但是$_FILES变量在PHP端是空的,出了什么问题?

1 个答案:

答案 0 :(得分:1)

删除此行:

request.setRequestHeader("Content-Type", "multipart/form-data");

原因用粗体强调。

  

FormData对象允许您编译一组要使用XMLHttpRequest发送的键/值对。它主要用于发送   表单数据,但可以独立于表单使用   传输密钥数据。 传输的数据格式相同   表单的submit()方法将用于发送数据如果表单的   编码类型设置为multipart / form-data

Source