javascript:将BASE64转换为BLOB仅在safari中失败

时间:2013-07-29 12:47:51

标签: javascript base64 blob

我正在尝试将blob(使用zip.js创建)转换为base64并将其保留在websql数据库中。然后我也想以相反的方式做这个过程。无论如何,我的测试代码(没有压缩)看起来像:

var blob = new Blob([data], {
    type : "text/plain"
});

blobToBase64(blob, function(b64) {      // convert BLOB to BASE64
    var newBlob = base64ToBlob(b64) ;   // convert BASE64 to BLOB
    console.log(blob.size + " != " + newBlob.size) ;
});

查看一个工作示例:http://jsfiddle.net/jeanluca/4bn5G/

所以,奇怪的是,它适用于Chrome,但不适用于Safari(也不适用于我的iPad)。

我还尝试将base64ToBlob重写为

function base64ToBlob(base64) {
    var binary = atob(base64);
    return new Blob([binary]) ;
}

但是de uncompress不再起作用,给我一个“IndexSizeError:DOM Exception 1”异常

我的代码中有什么可能错误的建议吗?

日Thnx

1 个答案:

答案 0 :(得分:4)

我发布评论后就找到了解决方案。

而不是

new Blob([data]);

DO

new Blob([data.buffer]);

注意添加" .buffer"