将二进制数据传输到服务器时出错

问题描述 投票:0回答:1

我在客户端读取了本地文件并将其提交给服务器,但是在恢复时会发生错误,并且无法打开图像。

JS

let req
let rsp

async function _post(url,data)
{
req = await fetch(url,{method: 'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body: "DATA="+data});

rsp = await fe.text();
document.getElementById('out').innerHTML = rsp;
}


      function handleFileSelect(evt){
        var files = evt.target.files;
            let f = files[0];
          if(!f.type.match('image.*')){
          alert('Not image.');}
          var reader = new FileReader();
          reader.onload = (function(theFile){
           return function(e){

                  _post('h.php',theFile.name+"BARRER"+e.target.result);

                 }})(f);reader.readAsBinaryString(f);}

      document.getElementById('files').addEventListener('change', handleFileSelect, false);

PhP

$d = $_POST['DATA'];
$e = explode("BARRER",$d);
$f = fopen($e[0],"w");
fwrite($f,$e[1]);
fclose($f);
javascript php binaryfiles
1个回答
0
投票

错误出在服务器代码中。正确的代码是:

$e = explode("BARRER",$d);
$f = fopen($e[0],"wb");
fwrite($f,$e[1]);
fclose($f);```
© www.soinside.com 2019 - 2024. All rights reserved.