文件字节流用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编码后再进行传输。当然建议文件不要太大。 ...

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

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

Base64编码为什么会使数据量变大?

上一篇文章里谈到了一个问题,那就是当把byte[]通过Convert.ToBase64String转换成Base64编码字符串时数据量明显变大,为何呢?这里就得先探究一下什么是Base64编码。 ...
  • sallay
  • sallay
  • 2008年12月18日 16:19
  • 14495

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

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

C#将文件进行Base64转码解码

是用C#将文件进行Base64转码解码,支持TXT、DOC、XLS等文件。

android 文件转base64,Base64转文件

在项目中需要用到文件传输入,为了传输方便最好的办法是将文件转成base64字串,再将base64字串转成字节流保存在文件了。 不过这种做法的虽然简单,但还是要根据实际需要进行选择;弊端是不能转太大的文...
  • JBBOY
  • JBBOY
  • 2014年04月04日 11:11
  • 23948

java之文件与base64字符之间的相互转换

package cn.xuanyuan.util; import java.io.File; import java.io.FileInputStream; import java.io.FileO...

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

收到了SegmentFault的一封私信:https://segmentfault.com/annual-report-2016#/start好奇检查了一下这是什么字体:。。好吧我确定没有这个字体,那...

解决base64上传文件,后台读取不到文件格式

解决base64上传文件,后台读取不到文件格式

base64数据如何传到后台

数据通过$_POST无法获取,如(xml数据、base64数据等)。 可以通过一下方式: 1、 $GLOBALS ["HTTP_RAW_POST_DATA"] 2、file_get_content...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件字节流用base64编码之后,后台接收问题
举报原因:
原因补充:

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