微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DOM异常5在javascript中有效的base64图像字符串上的INVALID CHARACTER错误

我正在尝试将一个图像的base64字符串解码为二进制解码,以便它可以由操作系统本地下载和显示

当作为具有数据URI前缀(数据:img / png; base64)的HTML IMG元素的src放置时,我已成功呈现字符串,但是当使用atob函数或goog闭包函数时,它失败。

但是,解码在这里放置成功:http://www.base64decode.org/

有任何想法吗?

编辑:
我成功地将其解码为除了内置的JS函数之外的另一个库。但是,它仍然不会在本地打开 – 在Mac上说它损坏或未知的格式,无法打开。

代码就像这样:

imgEl.src = 'data:img/png;base64,' + contentStr; //this displays successfully
decodedStr = window.atob(contentStr); //this throws the invalid char exception but i just
//used a different script to get it decode successfully but still won't display locally

base64字符串本身太长,无法显示(限制为30,000个字符)

解决方法

我刚刚把头撞在墙上一段时间。

这个问题有几个可能的原因。 1)Utf-8问题。这里有一个很好的解决方案。 http://monsur.hossa.in/2012/07/20/utf-8-in-javascript.html

在我的情况下,我也必须确保所有的空格都不在字符串之前传给atob。例如

function decodeFromBase64(input) {
  input = input.replace(/\s/g,'');
  return atob(input);
}

真正令人沮丧的是,base64使用python中的base64库正确解析,而不是在JS中解析。

原文地址:https://www.jb51.cc/html/233598.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐