一、现象描述

在开发过程中遇到了base64解码失败问题,ios和Android同时调用上传人脸数据,通过拍照拿到图片信息再装成base64字符串传给后台,此时发现ios上传的图片没有问题,Android端上传的时候后台却报了base64编解码失败,复制了日志信息的base64串去网站验证发现可以转换。

二、问题发现

经过一番折腾与思考,发现我Base64日志信息特别长,去官网验证时每次都删除调换行符,ding 灵机一动,猜测有可能是换行符原因导致

三、问题解决

在将base64字符串传给后台之前去掉换行符,经过验证确实可以解决问题,下面是去掉字符串换行符的代码,

faceBase64Url.replaceAll("[\\t\\n\\r]", "");

下面是图片转Base64的代码

 public static String bitmapFaceToBase64(Bitmap bitmap) {// 要返回的字符串String reslut = null;ByteArrayOutputStream baos = null;try {if (bitmap != null) {baos = new ByteArrayOutputStream();/*** 压缩只对保存有效果bitmap还是原来的大小*/bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);/*** 压缩只对保存有效果bitmap还是原来的大小*/int options = 100;// 如果大于500kb则再次压缩,最多压缩三次while (baos.toByteArray().length / 1024 > 500 && options > 10) {// 清空baosbaos.reset();// 这里压缩options%,把压缩后的数据存放到baos中bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);options -= 10;}// 转换为字符串baos.flush();baos.close();Log.e("bingo", "最后大小:" + baos.toByteArray().length / 1024 + "k");reslut = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);} else {return null;}} catch (IOException e) {e.printStackTrace();} finally {try {if (baos != null) {baos.close();}} catch (IOException e) {e.printStackTrace();}}return reslut;}

四、存在疑问

不知道为什么ios转换后不需要去掉换行符。android却需要处理一下。

五、疑问答案

reslut = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);

使用BASE64转字符串时使用DEFAULT模式了,这种DEFAULT模式遇到长度超过76的字符串就会加回车,造成以上问题,将模式改成NO_WRAP即可解决问题。

Android Base64解码失败问题相关推荐

  1. 柯达i2400批量自动扫描仪 JoySailScan控件转出的Base64尾部永远多一个'/',将导致解码失败

    柯达i2400批量自动扫描仪 JoySailScan控件转出的Base64尾部永远多一个'/',将导致解码失败 解决办法: 去掉尾部的'/'即可正常解码了 var base64Data = code. ...

  2. js base64解码JWT失败:VM273:1 Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to

    前端获取后端服务生成JWT,利用js方法base64解码payload段: window.atob("eyJzdWIiOiJ0ZXN0MyIsInVzZXJJZCI6IjEwMTY5MiIs ...

  3. java 和 Android Base64加密

    Java8 Base64 Java 8 新特性 在Java 8中,Base64编码已经成为Java类库的标准. Java 8 内置了 Base64 编码的编码器和解码器. Base64工具类提供了一套 ...

  4. java 和 Android Base64加密,java开发面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  5. des加密+base64编码,base64解码+des解密

    des加密+base64编码,base64解码+des解密 des简单介绍 base64简单介绍 运行效果图 TestActivity.java DataEncryptionUtil.java des ...

  6. 腾讯云 sdk调用 显示 图片解码失败 解决方案

    参考人脸识别接入常见问题汇总 - 腾讯云开发者社区-腾讯云的第六条 前情提要,接口需要image 的base64编码str,于是我的基本处理办法是 # 初始化用于对比的图片 filename1 = ' ...

  7. Java对图片Base64转码--HTML对Base64解码 [ Java加强版 ]

    Java对图片Base64编码 package base64;import java.awt.image.BufferedImage; import java.io.ByteArrayInputStr ...

  8. 【AVD】FFmpeg + MediaCodec 实现 Android 硬件解码,中间有个大坑

    最近在做移动端音视频编解码,首先要实现的是移动端视频的解码功能.纯的 FFmpeg 方法在移动端也能实现,但是效率上的确要慢一些,1080p 的视频还好,但是上到 2k.4k,那个解码速度(以肉眼可见 ...

  9. Xamarin Android项目运行失败

    Xamarin Android项目运行失败 错误信息:Build Failed: MonoDroid does not support running the previous version.  P ...

最新文章

  1. 从零开始学JavaScript一(简介)
  2. 如何打造具有绝对市场竞争力的团队
  3. css选择器中间的空格
  4. FLV文件中VideoPacket的详解
  5. 实例62:python
  6. 【PMP】组织结构类型
  7. 手写Java线程池_超详细解说_绝对能运行_代码超详细注释
  8. Python 二维创建与插入值的二种方法
  9. 数据有为 智在决策 | 观远数据2019智能决策峰会圆满落幕
  10. 让开发者 so easy 的一站式服务到底存不存在?
  11. 纳税人基本信息与服务器端基本信息不符,网上报税对浏览器有什么要求吗
  12. [HAOI2005] 希望小学
  13. 网络计算机和弱电,弱电工程师和网络工程师的区别,你知道吗?
  14. python开发一般用什么工具,最常用的python开发工具
  15. Excel点击按钮隐藏指定行
  16. 计算机相关的外国文献,计算机发参考文献外国 计算机发参考文献有哪些
  17. discuz php单页,从PHP的模板引擎看Discuz!模板机制
  18. 群晖Docker部署Microsoft SQL Server 2019
  19. 写全武汉的火锅店..更新版 恩..欢迎补充 ^_^
  20. 山东大学项目实训——解决微信小程序无法获得用户信息问题

热门文章

  1. AutoAugment中16种数据增强方法可视化直观展示
  2. 《自控力》-- 精华摘抄
  3. 文献阅读 - Combining Sketch and Tone for Pencil Drawing Production
  4. 调用百度ocr接口识别表格
  5. 数值积分: 梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式
  6. 微信开发者工具关联gitee
  7. AutoConfig工具使用指南
  8. 苹果电脑计算机无法启动,MacBook Pro 按开机按钮没反应无法开机
  9. c语言拔萝卜算法,拔萝卜优秀说课稿
  10. uniapp框架如何实现仿微信相册插件 | 图视频编辑 + 压缩