Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发送Blob时清空$\u POST_Javascript_Php_Post_Xmlhttprequest_Blob - Fatal编程技术网

Javascript 发送Blob时清空$\u POST

Javascript 发送Blob时清空$\u POST,javascript,php,post,xmlhttprequest,blob,Javascript,Php,Post,Xmlhttprequest,Blob,我使用Blob将二进制数据发送到服务器,但$\u POST变量中没有任何内容。我做错了什么 var xhr = new XMLHttpRequest(); xhr.open('POST', '/save.php', true); var formData = new FormData(); formData.append("data", new Blob(["㚂☇䰉耸ڀ찃怮...binary...:⡒㠯ݟᑣ"])); xhr.send(formData); xhr.onload = functi

我使用Blob将二进制数据发送到服务器,但
$\u POST
变量中没有任何内容。我做错了什么

var xhr = new XMLHttpRequest();
xhr.open('POST', '/save.php', true);
var formData = new FormData();
formData.append("data", new Blob(["㚂☇䰉耸ڀ찃怮...binary...:⡒㠯ݟᑣ"]));
xhr.send(formData);
xhr.onload = function(e){
    if (this.status == 200){
        console.log(this.responseText);
    }
};
服务器端:

var_dump($_POST); //returns array(0) {}
var_dump($HTTP_RAW_POST_DATA); //string(1820) "㚂☇䰉耸ڀ찃怮...binary...:⡒㠯ݟᑣ"

这是一个非常简单的修复

当您发送
BLOB
时,它将作为
文件
而不是
post
数据发送。因此,您需要使用
$\u文件
而不是
$\u帖子

使用修改为
var\u dump($\u文件)的代码
输出:

"array(1) {
  ["data"]=>
  array(5) {
    ["name"]=>
    string(4) "blob"
    ["type"]=>
    string(24) "application/octet-stream"
    ["tmp_name"]=>
    string(14) "/tmp/tmpfilename"
    ["error"]=>
    int(0)
    ["size"]=>
    int(44)
  }
}

然后,您可以使用
file\u get\u contents($\u FILES['data']['tmpname'])打开文件服务器端。
与任何其他上载的文件相同。

我通过以下方式发送数据:

var xhr = new XMLHttpRequest();
xhr.open('POST', '/save.php', true);
xhr.send("㚂☇䰉耸ڀ찃怮...binary...:⡒㠯ݟᑣ");
xhr.onload = function(e){
    if (this.status == 200){
        console.log(this.responseText);
    }
};
服务器端:

var_dump($_POST); //returns array(0) {}
var_dump($HTTP_RAW_POST_DATA); //string(1820) "㚂☇䰉耸ڀ찃怮...binary...:⡒㠯ݟᑣ"

我被选中了
var\u dump($\u FILES)
它是
NULL
即使它是空的,它也应该返回
array{}
如果它返回
NULL
则可能意味着你拼写错误(不太可能,但可能!),或者你的服务器已经关闭了文件上传。
echo'file_uploads:',ini_get('file_uploads')的输出是什么
文件\u上载:1
结果是什么?您在哪个服务器上运行?这是VPS吗?本地测试服务器?服务器:Apache/2.2,X-Powered-By:PHP/5.3.3-7+squeeze17