javascript中有效的base64图像字符串出现DOM异常5无效字符错误

DOM Exception 5 INVALID CHARACTER error on valid base64 image string in javascript

本文关键字:异常 DOM 无效 错误 字符 有效 base64 字符串 图像 javascript      更新时间:2023-09-26

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

当我将字符串作为带有数据URI序(data: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字符串本身太长,无法在此处显示(限制为30000个字符)

我只是用头撞墙了一会儿。

这个问题可能有几个原因。1) Utf-8问题。这里有一个很好的写作+解决方案。

在我的例子中,在将字符串传递给atob之前,我还必须确保所有的空白都在字符串之外。例如

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

真正令人沮丧的是,base64使用python中的base64库进行了正确解析,但在JS中却没有。

我不得不删除b64前面的data:audio/wav;base64,,因为这是b64的一部分。

var data = b64Data.substring(b64Data.indexOf(',')+1);

var processed = atob(data);