base64编码图片转换为二进制流并保存后,无法在firefox浏览器读取

时间:2022-11-13 00:00:46
base64编码图片转换为二进制流并保存后,无法在firefox浏览器读取
如图中的代码,是把前端的base64位编码转换为流并保存到某服务器某目录下。
但出现个问题:谷歌浏览器上上传并保存的图片,在Firefox浏览器上不显示(报错:图像“”因存在错误而无法显示)。
网上查资料,很可能是(type是默认的acsii,改成binary后再传,没有问题了。)。
那么,怎么在base64编码转换为流的过程中设置binary呢?

4 个解决方案

#1


write.flush();与write.close();对换下
应该不是这个代码的问题
如果图片是通过页面访问的有可能你的页面还输出了多余的字符

#2


引用 1 楼 slwsss 的回复:
write.flush();与write.close();对换下
应该不是这个代码的问题
如果图片是通过页面访问的有可能你的页面还输出了多余的字符


------------------------------------------------------------------------------
图片的存放地址(http://***.**.**.***/2b430300-6c43-44a1-95d0-34d222515eed_20151209161720.png)直接在地址栏搜索,谷歌浏览器的可以搜索出来图片内容。相同的地址,但是火狐就不行,报错“图片错误”。
base64位编码转为流并读取保存图片。谷歌和IE都可以顺利查看,就是火狐不行了。
不是页面多余字符的原因。

#3


找到问题了。
因为sun.misc.BASE64Decoder不被建议使用,所以我用的Base64,但Base64有很多引用的选择,所以没仔细去选合适的。
网上查到的问题原因是正确的,我用的Base64转换的流,type是默认的acsii,需要改成binary。
刚刚仔细比对了一下Base64,里面有个org.apache.commons.codec.binary.Base64,转换时type会设置为binary。用它的decodeBase64(String str)实现了base64转换流的过程,并被火狐浏览器识别。

#4


new HBaseAdmin(conf)时报at java.lang.NumberFormatException.forInputString
楼主以前你遇到过怎么解决的啊

#1


write.flush();与write.close();对换下
应该不是这个代码的问题
如果图片是通过页面访问的有可能你的页面还输出了多余的字符

#2


引用 1 楼 slwsss 的回复:
write.flush();与write.close();对换下
应该不是这个代码的问题
如果图片是通过页面访问的有可能你的页面还输出了多余的字符


------------------------------------------------------------------------------
图片的存放地址(http://***.**.**.***/2b430300-6c43-44a1-95d0-34d222515eed_20151209161720.png)直接在地址栏搜索,谷歌浏览器的可以搜索出来图片内容。相同的地址,但是火狐就不行,报错“图片错误”。
base64位编码转为流并读取保存图片。谷歌和IE都可以顺利查看,就是火狐不行了。
不是页面多余字符的原因。

#3


找到问题了。
因为sun.misc.BASE64Decoder不被建议使用,所以我用的Base64,但Base64有很多引用的选择,所以没仔细去选合适的。
网上查到的问题原因是正确的,我用的Base64转换的流,type是默认的acsii,需要改成binary。
刚刚仔细比对了一下Base64,里面有个org.apache.commons.codec.binary.Base64,转换时type会设置为binary。用它的decodeBase64(String str)实现了base64转换流的过程,并被火狐浏览器识别。

#4


new HBaseAdmin(conf)时报at java.lang.NumberFormatException.forInputString
楼主以前你遇到过怎么解决的啊