2

我正在尝试将 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]) ;
}

但是然后解压缩不再起作用,给了我一个“IndexSizeError: DOM Exception 1”异常

有什么建议我的代码可能有什么问题吗?

谢谢

4

1 回答 1

4

好吧,我在发表评论后找到了解决方案。

代替

new Blob([data]);

new Blob([data.buffer]);

注意添加了“.buffer”

于 2013-10-13T01:31:45.950 回答