关闭

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

标签: base64
5689人阅读 评论(1) 收藏 举报

今天一直在弄文件上传,在处理安卓那边传过来的(图片字节流)用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();
        }
    }
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5723次
    • 积分:73
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论