zoukankan      html  css  js  c++  java
  • 客户端通过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转换成Base64字符串
    以一颗童心善待生活
  • 相关阅读:
    solidworks 学习 (二)洗手液瓶
    solidworks 学习 (一)螺丝刀
    tensorflow 2.0 学习(三)MNIST训练
    tensorflow 2.0 学习(二)线性回归问题
    tensorflow 2.0 学习(一)准备
    sscanf linux-c从一个字符串中读进与指定格式相符的数据
    Linux-c glib库hash表GHashTable介绍
    Linux-c给线程取名字
    linux-c getopt()参数处理函数
    golang Linux下编译环境搭建
  • 原文地址:https://www.cnblogs.com/lizhilin2016/p/9122530.html
Copyright © 2011-2022 走看看