使用fetch()在服务器上发送.zip文件时遇到问题

时间:2020-07-30 15:05:50

标签: javascript php

我尝试通过这种方式在服务器上发送.zip文件:

function sendData(){
    let zipFile = document.getElementById('fileReciever').files[0];
    let formData = new FormData();

    formData.append('id', btoa('7804044924'));
    formData.append('data', zipFile);
    fetch('http://localhost/xmlReader/reciever.php', {method: "POST", body: formData});
}

但是在$ _POST的服务器(php)上,我仅获得“ id”字段,“ data”不存在。我做错了什么?

我这样尝试:

let zipFile = document.getElementById('fileReciever').files[0];
let formData = new FormData();

formData.append('id', btoa('7804044924'));
formData.append('data', zipFile);
//fetch('http://localhost/xmlReader/reciever.php', {method: "POST", body: formData});

let req = new XMLHttpRequest();
req.open("POST", 'http://localhost/xmlReader/reciever.php');
req.send(formData);

但是结果是相同的-在$ _POST的服务器上,我仅获得一个字段-“ id”,缺少字段“ data”。

1 个答案:

答案 0 :(得分:0)

如果要捕获文件,则必须使用$ _FILES而不是$ _POST。

假设您发送的图片比var_dump($ _ FILES)多,您将获得数组内容

  • [名称]:名称(来自浏览器,因此被污染)
  • [类型] =>图片/ jpeg(文件类型)
  • [tmp_name] => / tmp / php / php1h4j1o(取决于您的配置设置,但是用户无法控制,因此不会受到污染)
  • [错误] => UPLOAD_ERR_OK(= 0)
  • [大小] => 123(字节大小)

这样您就可以获取文件数据。

Here,您会找到很好的示例,例如我在此使用的示例。

相关问题