gpt4 book ai didi

javascript - JS/PHP ajax 发布 Blob

转载 作者:行者123 更新时间:2023-12-03 06:18:53 24 4
gpt4 key购买 nike

我正在测试 AJAX 文件上传,我希望最终能够使用图像来上传,但现在我很高兴能够让文本文件正常工作。我将在下面放置我的代码片段。

JS

var blob //creates blob global variable.

//reads in blob to blob global var on change of file input.
function readBlob(evt){

var files = evt.target.files;
if(!files.length){
alert("no file");
return;
}

var file = files[0];
var reader = new FileReader();

reader.onloadend = function(evt){
if (evt.target.readyState == FileReader.DONE){
document.getElementById("jsReturnDiv").textContent = evt.target.result;
blob = new Blob([evt.target.result], {type: 'text/plain'});
}
};

reader.readAsBinaryString(file);
}


function post(){
var i = 0;
xhr.open("POST","what.php",true);
xhr.setRequestHeader("content-type","text/plain");
xhr.onreadystatechange = function(){
if(xhr.status == 200 && xhr.readyState == 4){
callback(xhr.responseText);
}
log(i,xhr.responseText);
i++;
}
xhr.send(blob);
}

function callback(text){ //HUEHUEHUE
document.getElementById("phpReturnDiv").innerHTML = text + "</br>___encoded</br>" + jsVarDump(blob) //+ "</br>___decoded</br>" + jsVarDump(decodeURIComponent(blob));
}

function log(index, text){
console.log("index:"+index+"_______________________\n"+text);
}

PHP

<?php
var_dump($_POST);
?>

我遇到的问题是 php 的输出始终是:

array(0) { }

我想知道我做错了什么是否立即显而易见。文件被解释为二进制字符串并输入到内容类型为 text/plain 的 blob 对象中,然后以 text/plain 形式发布。

我应该在 XHR 对象中使用不同的内容类型 header 吗?我是否错误地处理了 Blob ?

谢谢!

最佳答案

您必须读取 php://input 才能从内容类型为 text/plain 的帖子中获取数据。 $_POST 仅填充 application/x-www-form-urlencodedmultipart/form-data

$text = file_get_contents('php://input');

关于javascript - JS/PHP ajax 发布 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com