客户端通过base64上传bitmap服务器
Posted 紫虹载雪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了客户端通过base64上传bitmap服务器相关的知识,希望对你有一定的参考价值。
首先致谢:http://www.jb51.net/article/129743.htm
咱们不是代码的生产者,只是代码的搬运工。
场景描述:android客户端需要上传头像等图片到服务器,经双方协商决定采用base64方式上传。但是客户端直接将bitmap转成base64上传,服务端却无法解析。
问题剥析:经查验,发现客户端直接上传的base64,缺少头文件,导致服务器无法解析。
头文件格式:data:image/*;base64, +base64字符串 //*替换成客户端转换的png/jpg/jpeg等格式
尝试解决:
思路一:接口添加字段,客户端需要上传格式字段 ——缺点:接口复杂化,多字段,不利于维护
思路二:双方约定一个格式,使用统一格式编码解码 ——缺点:接口限制性太高,缺少灵活性
思路三:直接在客户端对于生成的base64字符串进行拼接 ——优点:只需要在客户端进行额外处理接口,不必改动接口
data:image/*;base64, +base64字符串 //*替换成客户端转换的png/jpg/jpeg等格式
最终方案:采用思路三,考虑到复用性问题,直接在工具类中统一完成拼接,得到完美解决。
附:
1 /** 2 * 通过Base64将Bitmap转换成Base64字符串 3 * @param bit 4 * @return 5 */ 6 public String Bitmap2StrByBase64(Bitmap bit){ 7 ByteArrayOutputStream bos=new ByteArrayOutputStream(); 8 bit.compress(CompressFormat.JPEG, 40, bos);//参数100表示不压缩 9 byte[] bytes=bos.toByteArray(); 10 return Base64.encodeToString(bytes, Base64.DEFAULT); 11 }
以上是关于客户端通过base64上传bitmap服务器的主要内容,如果未能解决你的问题,请参考以下文章
Cordova/Ionic 应用程序通过服务器签名的 url 将 base64 图像上传到 S3
Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码
为啥Bitmap to Base64 String在android的webview上显示黑色背景?