文件字节流用base64编码之后,后台接收问题

原创 2015年11月21日 10:39:23

今天一直在弄文件上传,在处理安卓那边传过来的(图片字节流)用base64编码后的字符串时,遇到了一个坎,只能写入一部分,如图:
![这里写图片描述](http://img.blog.csdn.net/20151121103137952)

若直接换成16进制编码,传到后台写入到硬盘,却可以成功,证明传过来的字符串没问题,后来想了个招,直接把传过来的字符串
写入到txt,然后对比安卓端用base64编码后的字符串,发现了问题所在,如图
这里写图片描述
细心的童鞋很容易发现,服务器端接收的字符串会把“+”替换成空格,加号(+)是BASE64编码的一部分,而加号在后台接收时被当成是空格。
处理办法是:直接把空格替换成“+”,然后解码,就能成功写入了哭,瞎折腾了这么久,分享给大家。简单的贴一下代码:

    JSONArray array=jsonObject.getJSONArray("image");
    String imgStr = array.getString(0);
    if (imgStr != null && !("").equals(imgStr) ) {
    //解决后台接收base64编码出现空格的问题
    String sst=imgStr.replace(" ", "+");
       byte[] b;
        try {
            b= new BASE64Decoder().decodeBuffer(sst);
             for (int i = 0; i < b.length; ++i) {  
                    if (b[i] < 0) {  
                        // 调整异常数据  
                        b[i] += 256;  
                    }  
                } 
            OutputStream os = new FileOutputStream(文件夹路径+文件名);
            os.write(b);
            os.flush();
            os.close();
           } catch (IOException e2) {
            e2.printStackTrace();
        }
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

对文件进行base64编码成字符串进行保存或传输

现在微服务很流行,特别是restFull。如果数据格式是json或xml,发现涉及到文件传输时就不太好处理了。网上找到解决方法,就是将文件进行base64编码后再进行传输。当然建议文件不要太大。 ...
  • dream_broken
  • dream_broken
  • 2016年12月12日 15:06
  • 5073

将文件用base64编码保存成字符串,并从字符串中还原。

        //        //  using System;        //  using System.IO;        //         ///         /// Te...
  • runmin
  • runmin
  • 2004年08月06日 15:07
  • 2108

Base64 转 文件下载

将base64字符串转化为文件 1、将下面代码另存为html文件 2、用浏览器打开 3、点击下载 代码如下: 输入base64字符串 data:...
  • Codec007
  • Codec007
  • 2017年04月24日 14:03
  • 1666

文件流转换为base64码 和 base64码转换为文件流

例子说明一切先写单元测试吧:单元测试的代码如下:package test.com.cs;import com.cs.Base64Convert;import junit.framework.TestC...
  • a9529lty
  • a9529lty
  • 2011年06月23日 14:55
  • 32484

base64数据如何传到后台

数据通过$_POST无法获取,如(xml数据、base64数据等)。 可以通过一下方式: 1、 $GLOBALS ["HTTP_RAW_POST_DATA"] 2、file_get_content...
  • guaiguaiknl
  • guaiguaiknl
  • 2016年12月13日 13:18
  • 3169

将base64格式的字体信息解码成可用的字体文件

收到了SegmentFault的一封私信:https://segmentfault.com/annual-report-2016#/start好奇检查了一下这是什么字体:。。好吧我确定没有这个字体,那...
  • u014291497
  • u014291497
  • 2017年02月07日 20:48
  • 2846

Byte[]和BASE64之间的转换

from  http://blog.sina.com.cn/s/blog_4c6e822d0100lyeq.html 一、  BASE64编码 把byte[]中的元素当做无符号八位...
  • u010820135
  • u010820135
  • 2017年04月18日 22:29
  • 2084

Base64处理byte[ ]和base64字符串之间的转换

1、工具类 import org.apache.commons.codec.binary.Base64; public class UtilHelper { //base64字符串转byt...
  • big1989wmf
  • big1989wmf
  • 2017年04月12日 16:40
  • 14048

POST base64 图片字节流转成字符串后格式丢失导致无法解析

今天发现做一个发彩信的需求,其中前台要提交图片流和部分文字参数 比如有 彩信主题 图片的备注描述 还有图片流 想想直接提交流后还要读出来,还有上传的图片和参数是动态的,图片个数不定,所以干脆在参数名后...
  • sj7121
  • sj7121
  • 2016年09月23日 21:50
  • 2891

Base64与byte[]相互转换.

  • 2013年12月09日 17:50
  • 785B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件字节流用base64编码之后,后台接收问题
举报原因:
原因补充:

(最多只允许输入30个字)