图片BASE64 通过POST提交后,似乎字符被修改了。

lgmsyy 2014-07-30 07:21:24
错误在线:
1.在WEB端上传图片;
2.将图片转成byte[];
3.byte[]转成BASE64格式字符串;
4.POST提交;
5.将接收到的BASE64转成byte[];
6.将byte[]转成图片。

发现在第6步,转成图片后,图片打不开。

试验在3、4之间将BASE64转byte[],再转图片,没问题。


推断问题处在POST提交后,BASE64应该被修改过了。
请问,如何解决这个问题呢
...全文
8081 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hi,我来啦 2018-05-18
  • 打赏
  • 举报
回复
我也是我用post提交到后台+号变没有了,不知道怎么回事,这就没法解析了,少字符了
毛太 2015-10-21
  • 打赏
  • 举报
回复
用js的Component函数过滤
lgmsyy 2014-07-30
  • 打赏
  • 举报
回复
引用 8 楼 wn_1981 的回复:
把空格再替换成加号不就行了 http://blog.csdn.net/wang0928007/article/details/7429568
这样做不是不行,但问题是,有的人没有出现我说的情况。我想知道原因和如何解决
lgmsyy 2014-07-30
  • 打赏
  • 举报
回复
引用 6 楼 lsongiu86 的回复:
不应该吧,我最近的项目就是上传图片的base64编码,post的,一直很正常啊
你的POST怎么做的
wn_1981 2014-07-30
  • 打赏
  • 举报
回复
把空格再替换成加号不就行了 http://blog.csdn.net/wang0928007/article/details/7429568
lgmsyy 2014-07-30
  • 打赏
  • 举报
回复
引用 5 楼 ygycomon 的回复:
[quote=引用 4 楼 lgmsyy 的回复:] 我发现在POST前BASE64有+,POST后+变成了空格.
用urlencode吧[/quote] 怎么加?以下是我的POST方法: public static String Post(String strUrl, HashMap hmParameter,String htmlCode) throws Exception { URL u = null; HttpURLConnection con = null; String postData = ""; for (Iterator itr = hmParameter.keySet().iterator(); itr.hasNext();) { String key = (String) itr.next(); String value = (String) hmParameter.get(key); if (postData == "") { postData = key + "=" + value; } else { postData += "&" + key + "=" + value; } } try { u = new URL(strUrl); con = (HttpURLConnection) u.openConnection(); con.setRequestMethod("POST"); con.setDoOutput(true); con.setDoInput(true); con.setConnectTimeout(5 * 1000); con.setUseCaches(false); con.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); OutputStreamWriter osw = new OutputStreamWriter(con .getOutputStream(),htmlCode); osw.write(postData); osw.flush(); osw.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (con != null) { con.disconnect(); } } StringBuffer buffer = new StringBuffer(); try { BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); String temp; while ((temp = br.readLine()) != null) { buffer.append(temp); buffer.append("\n"); } } catch (Exception e) { e.printStackTrace(); } return buffer.toString(); }
lsongiu86 2014-07-30
  • 打赏
  • 举报
回复
不应该吧,我最近的项目就是上传图片的base64编码,post的,一直很正常啊
致知Fighting 2014-07-30
  • 打赏
  • 举报
回复
引用 4 楼 lgmsyy 的回复:
我发现在POST前BASE64有+,POST后+变成了空格.
用urlencode吧
lgmsyy 2014-07-30
  • 打赏
  • 举报
回复
我发现在POST前BASE64有+,POST后+变成了空格.
  • 打赏
  • 举报
回复
如何生成,以及如何反向解析的代码贴出来。
lgmsyy 2014-07-30
  • 打赏
  • 举报
回复
引用 1 楼 ygycomon 的回复:
post提交不会修改流数据的,你可以把发之前和发之后的数据拿出来自己比较一下,应该是哪个地方处理有问题
发之前和发之后的byte[]确实不一样。所以才换衣室POST提交造成的啊。
致知Fighting 2014-07-30
  • 打赏
  • 举报
回复
post提交不会修改流数据的,你可以把发之前和发之后的数据拿出来自己比较一下,应该是哪个地方处理有问题
lgmsyy 2014-07-30
  • 打赏
  • 举报
回复
有人告诉我是字符集的问题,但是我的JSP,JAVA都是用的UTF-8
lgmsyy 2014-07-30
  • 打赏
  • 举报
回复
引用 11 楼 ygycomon 的回复:
数据用urlencode编码
具体怎么用?到网上查了下,也不返回任何值啊
致知Fighting 2014-07-30
  • 打赏
  • 举报
回复
数据用urlencode编码

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧