ios10系统以下原生传来的base64图片无法转化为二进制

时间:2023-03-09 01:51:04
ios10系统以下原生传来的base64图片无法转化为二进制

  最近在做和原生ios交互上传图片的时候,遇到原生传来的以base64图片位无法转化为二进制。因为前端上传图片的方式是以二进制的方式上传,在ios10 和安卓上,上传图片是可以的;在ios10以下,可以在根据base64可以在页面显示,也能打印出base64位编码;但是在执行atob的方法就报错;

报错原因如下:

ios10系统以下原生传来的base64图片无法转化为二进制

最开始base64转二进制的方法:

ios10系统以下原生传来的base64图片无法转化为二进制

修改后的代码,其实修改了一行代码:

var byteString = atob(base64Data.split(',')[1].replace(/\s/g, ""));

ios10系统以下原生传来的base64图片无法转化为二进制

  在比较Android传来的base64和ios10以下传来的base64对比,发现他们是有区别;初步断定是ios10以下传来的base64有空格,原因是他们在换行的时候,出现的转义符,导致atob这个无法正常的转化为二进制。会报上面的错误。

参考:https://dracoblue.net/dev/fix-dom-exception-5-invalid-character-with-atob/