Javascript blob filereader输出似乎为空(数据:;base64,/9j/4AAAAA…)

Javascript blob filereader输出似乎为空(数据:;base64,/9j/4AAAAA…),javascript,websocket,binary,blob,Javascript,Websocket,Binary,Blob,已经用C构建了一个websocket服务器,可以发送/接收文本ok,已经将操作码更改为二进制(130),我正在尝试发送一个小图像(574字节)。客户端二进制类型设置为“blob” javascript客户端 function onMessage(evt) { if(evt.data instanceof Blob){ console.log(evt.data.size);//574 bytes var reader = new FileReader();

已经用C构建了一个websocket服务器,可以发送/接收文本ok,已经将操作码更改为二进制(130),我正在尝试发送一个小图像(574字节)。客户端二进制类型设置为“blob”

javascript客户端

function onMessage(evt) {
  if(evt.data instanceof Blob){         
    console.log(evt.data.size);//574 bytes
    var reader = new FileReader();
    var img = document.querySelector("#img_test");

    reader.onload = function(e) {
      img.src = reader.result;
      console.log(img.src);
    }

    reader.readAsDataURL(evt.data);
  }
  else{
    $("#txt_window").append(evt.data+'<br/>');  
  }     
}
消息函数(evt){
如果(Blob的evt.data实例){
console.log(evt.data.size);//574字节
var reader=new FileReader();
var img=document.querySelector(“img#u测试”);
reader.onload=函数(e){
img.src=reader.result;
console.log(img.src);
}
reader.readAsDataURL(evt.data);
}
否则{
$(“#txt_窗口”).append(evt.data+'
'); } }
文件读取器的输出为; (数据:;base64、/9j/4AAAAA等…等…很多A)


evt.data的大小与从服务器发送的文件(574字节)匹配,但reader.result似乎没有任何内容(因此为A)。有人知道我做错了什么吗?

我的linux框似乎是little endian,我想知道我是否需要将二进制转换为big endian,然后发送?你应该检查开发工具中的net选项卡,看看是否发送了正确的数据,看起来前4个字节是正确的,其余的都是空的。干杯@musa,你有钱了!我使用strlen来确定ssl_写入帧长度(4字节是数据_索引,这引发了一些想法),它对以null结尾的C字符串有效,但对二进制代码不太好:)
function onMessage(evt) {
  if(evt.data instanceof Blob){         
    console.log(evt.data.size);//574 bytes
    var reader = new FileReader();
    var img = document.querySelector("#img_test");

    reader.onload = function(e) {
      img.src = reader.result;
      console.log(img.src);
    }

    reader.readAsDataURL(evt.data);
  }
  else{
    $("#txt_window").append(evt.data+'<br/>');  
  }     
}