【问题标题】:javascript: convert BASE64 to BLOB fails in safari onlyjavascript:仅在 safari 中将 BASE64 转换为 BLOB 失败
【发布时间】:2013-07-29 06:29:23
【问题描述】:

我正在尝试将 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”异常

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

谢谢

【问题讨论】:

  • 是的..我有同样的问题。 bas64 -> blob 转换在 safari 中失败,但在 IE、Chrome 和 Firefox 中有效。你找到答案了吗?

标签: javascript base64 blob


【解决方案1】:

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

代替

new Blob([data]);

new Blob([data.buffer]);

注意添加了“.buffer”

【讨论】:

  • 那太好了!但是,我看不到在哪里应用它。你能修改我的 jsfiddle 吗?
猜你喜欢
  • 2015-03-14
  • 2018-10-07
  • 2013-09-10
  • 2017-11-21
  • 2015-01-31
  • 2021-07-27
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多