2016-12-01 87 views
0

我遇到了JavaScript Filereader的问题,它返回错误Uncaught TypeError:未能在'FileReader'上执行'readAsDataURL' :参数1不是'Blob'类型。无法在'FileReader'上执行'readAsArrayBuffer':参数1不是'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 

任何想法?由于

+0

可能是由于使用本地文件路径,试试它在web服务器上。你也正在阅读它错误的方式看到[this](http://stackoverflow.com/questions/32215538/using-filereader-readasarraybuffer-on-changed-files-in-firefox ) – Viney

+0

这个请求是异步的,所以'blob = xhr.response;'这行很可能会被执行_after _ myReader.readAsArrayBuffer(blob);'行。发生错误是因为在那一刻“blob”仍然评估为“null”。 您可以通过在'onload'函数中移动FileReader操作来修复它。 – Soravux

回答

0

在我来说,我使用的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)); 
相关问题