weixin_33728708 2016-08-15 12:30 采纳率: 0%
浏览 48

JS / PHP ajax发布Blob

I'm testing out AJAX file uploads, I want to eventually be able to do it with images, but right now I'm happy to get text files working. I'll put a snip of my code below.

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+"_______________________
"+text);
}

PHP

<?php
var_dump($_POST);
?>

The problem that I get is that the output of the php is always:

array(0) { }

I was wondering if it was immediately obvious what I'm doing wrong. File is interpreted as a binary string and fed into a blob object, with content type text/plain, then POSTed as text/plain.

Should I be using a different content-type header in my XHR object? Am I handling the blob incorrectly?

Thanks!

  • 写回答

1条回答 默认 最新

  • python小菜 2016-08-15 13:37
    关注

    You'll have to read php://input to get data from a post with content type text/plain. $_POST is only populated with application/x-www-form-urlencoded and multipart/form-data

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

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。