我是新的反应,并希望显示一个图像下载为二进制数据。我将图像数据从api调用下载到。api调用工作,因为图像显示在邮递员中,没有问题。我还可以将图像数据保存到jpeg文件中,并显示为ok。
在React中,我想做<img src={`data:image/jpeg;base64,${theImage}`} />,为此,我需要将二进制数据转换为base64编码的字符串。当我使用cat image.jpeg|base64 > base64.txt转换下载的jpeg时,得到的字符串在我的React应用程序中工作。
但是当我尝试var theImage = btoa(binarydata)时,我得到了Unhandled Rejection (InvalidCharacterError): Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
搜索完这个问题后,我尝试使用var theImage = btoa(unescape(encodeURIComponent( binarydata )))和类似的建议解决方案,但由此产生的字符串并不像看起来那样是jpeg的有效base64编码(我尝试了在联机be 64->图像服务中转换的结果,没有显示图像)。我还尝试过其他被提议的解决方案,比如base64-js和js 64库,这些库中的任何一个都创建了一个有效的base64有效映像,可以在我的反应代码中显示出来。
当Base64抛出latin1异常时,如何将jpeg二进制数据转换为有效的latin1图像编码?
https://stackoverflow.com/questions/65106440
复制相似问题