【问题标题】:JS / PHP ajax posting BlobJS/PHP ajax 发布 Blob
【发布时间】:2016-12-21 15:52:56
【问题描述】:

我正在测试 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) { }

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

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

谢谢!

【问题讨论】:

    标签: javascript php ajax blob


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-01
      • 2017-10-03
      • 2014-07-09
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多