首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在$_FILES中获取文件,但进入$_SERVER

无法在$_FILES中获取文件,但进入$_SERVER
EN

Stack Overflow用户
提问于 2015-03-11 09:03:00
回答 1查看 106关注 0票数 1

(正如他所要求的,以澄清为何我的问题不重复建议的职位)

我的问题与那个问题不重复,因为

  1. 我正在起诉JavaScript和Ajax,这两个链接问题并没有。
  2. 虽然我已经尝试过解决那个不起作用的职位

我使用ajax,为了发出ajax请求,我使用javaScript

代码语言:javascript
运行
复制
<input id="file" type="file" name="our-file" />
<input type="button" value="Upload" id="upload-button"   /> 

Js

代码语言:javascript
运行
复制
var inputFile = document.getElementById("file"),
    uploadButton = document.getElementById("upload-button");

uploadButton.onclick = function () {
    console.log(inputFile.files[0])

    var file = inputFile.files[0];

    var httpRequest = new XMLHttpRequest();

    httpRequest.onreadystatechange = stateHandler;


    httpRequest.open("POST", "upload.php", true);
    httpRequest.setRequestHeader("X-File-Name", file.name);
    httpRequest.send(file)


    function stateHandler() {
        var status = {
            "httpRequest ready state": httpRequest.readyState,
            "status": httpRequest.status,
            "httpRequest responseText":httpRequest.responseText
        };
        console.log(status);
        console.log(httpRequest.responseText);
    }
}

现在,当我试图通过$_FILES上传文件时,我得到了空数组,但是$_SERVER有完整的文件信息,是因为我只发送了头文件本身而不是文件本身?

$_SERVER http://i.stack.imgur.com/1GMdh.png显示我的输出

使用$_FILES http://i.stack.imgur.com/IECUt.png输出的屏幕截图

谢谢,我不想要jquery建议(我认为在jquery框架开发之前了解语言是件好事):

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-11 09:45:09

您正在发送原始文件数据。您没有发送multipart/form-data编码的请求,因此不会将其作为常规表单数据处理(因此不会填充$_FILES$_POST )。

创建一个表单数据对象。

代码语言:javascript
运行
复制
var formData = new FormData();

将文件信息放在:

代码语言:javascript
运行
复制
formData.append("myFile", inputFile.files[0]);

发送:

代码语言:javascript
运行
复制
request.send(formData);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28982260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档