【问题标题】:Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'无法在“FileReader”上执行“readAsArrayBuffer”:参数 1 不是“Blob”类型
【发布时间】:2023-03-04 19:35:01
【问题描述】:

我遇到了一个 javascript Filereader 的问题,它返回错误 Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'。

这里是javascript:

                    var blob = null;
                    var xhr = new XMLHttpRequest(); 
                    xhr.open("GET", "C:\\Users\\yw1kew\\Desktop\\LG_FRAME.plmx"); 
                    xhr.responseType = "blob";//force the HTTP response, response-type header to be blob
                    xhr.onload = function() 
                    {
                        blob = xhr.response;//xhr.response is now a blob object
                    }
                    xhr.send();
                    var myReader = new FileReader();
                    myReader.readAsArrayBuffer(blob) // THE CODE FAILS HERE

有什么想法吗?谢谢

【问题讨论】:

  • 可能是由于使用了本地文件路径,请在网络服务器上尝试。另外你读错了见this
  • 这个请求是异步的,所以blob = xhr.response;这行很可能会被执行之后行`myReader.readAsArrayBuffer(blob);. The error happens because blob`仍然计算为null 在那一刻。您可以通过在 onload 函数中移动 FileReader 操作来修复它。

标签: javascript angularjs xmlhttprequest blob filereader


【解决方案1】:

在我的例子中,我使用 SharePoint 作为平台,我需要像这样转换二进制代码:

    binaryDecode = function (data) {
    var ret = '';
    if (data) {
        var byteArray = new Uint8Array(data);
        for (var i = 0; i < data.byteLength; i++) {
            ret = ret + String.fromCharCode(byteArray[i]);
        }
    }
    return ret;
};

然后像这样使用它:

console.log(binaryDecode(arrayBuffer));

【讨论】:

    【解决方案2】:

    我刚刚遇到了同样的问题,在网上搜索了几个小时的解决方案后,我意识到我可能只能使用 fetch,它确实有效!

    fetch("./file.bin")
      .then((data) => {
        return data.arrayBuffer();
      })
      .then((array) => {
        console.log(buffer);
      })
      .catch((error) => {
        console.log(error);
      });
    

    【讨论】:

      猜你喜欢
      • 2018-04-01
      • 2016-02-10
      • 1970-01-01
      • 2021-12-04
      • 2015-04-23
      • 2015-12-07
      • 1970-01-01
      • 2016-01-02
      相关资源
      最近更新 更多