C# 与 Java 通过Base64传送图片
来源:互联网 发布:can数据帧格式 编辑:程序博客网 时间:2024/06/05 02:33
通过winform上传图片到java服务器,使用C#的webclient.uploadFile上传图片,但不知为什么在java服务器端(struts2)的action中获取不到上传的文件,研究了半天也没结果,所以尝试使用Base64将图片转成字符串,然后http传给java服务器。
按理Base64标准是统一的,C#转Base64字符串再使用Java把字符串解码成图片,所以上百度搜了半天代码,
C#代码:
Bitmap bmp = new Bitmap(文件路径);MemoryStream ms = new MemoryStream();bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);byte[] fileBytes = new byte[ms.Length];ms.Position = 0;ms.Read(fileBytes, 0, (int)ms.Length);ms.Close();//http post给后台
Java代码:
String imgFile = request.getParameter("imgFile");BASE64Decoder decoder = new BASE64Decoder();byte[] imgBytes = decoder.decodeBuffer(imgFile);FileOutputStream fos = new FileOutputStream(img);fos.write(imgBytes);fos.close();这样试了几次不行,解码的图片总是打不开,想了半天,试着用BASE64Encoder将图片转成Base64字符串,发现和C#转换的字符串不一样,然后又是半天百度,搜到的内容就那么几个,没啥用,只好求助google了,嗯,不得不说,搜到了更多的内容,有的说是不能用sun.misc.BASE64Encoder,要用java8的java.util.Base64或者org.apache.commons.codec.binary.Base64,然后就试试吧,,奶奶的,都不行。不可能吧,我在想Java端是直接解码保存成图片的,怎么C#端就得先转成Bitmap呢?那我就把Bitmap去了,直接读取图片文件的二进制流,转成Base64,如下:
FileStream fs = new FileStream(文件路径, FileMode.Open, FileAccess.Read);byte[] fileBytes = new byte[fs.Length];fs.Read(fileBytes, 0, (int)fs.Length);//http post给后台
我去,这次编码看起来真的一样,不过java报错,说是Base64字符格式不对?哦哦哦,对比一下,发现是“+”变成“ ”空格了,什么问题,在http传输的时候应该需要转码,但winform没找到转码的方法,就简单点,在java端把空格都替换成“+”,然后解码,OK.
网上搜的转码方法:
public static string UrlEncode(string str){ StringBuilder sb = new StringBuilder(); byte[] byStr = System.Text.Encoding.UTF8.GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str) for (int i = 0; i < byStr.Length; i++) { sb.Append(@"%" + Convert.ToString(byStr[i], 16)); } return (sb.ToString());}
成功了!!!!!!!!!!!!
阅读全文
1 0
- C# 与 Java 通过Base64传送图片
- C#与C++通过socket传送结构体
- java图片与base64字符串互转
- MD5+Base64 Java与C#一致
- Windows C与Java之间通过socket传送中文数据
- Base64编码的字符串与图片的转换 C#
- Base64编码的字符串与图片的转换 C#
- Base64编码的字符串与图片的转换 C# .
- C#中图片与BASE64码互相转换
- C#中图片与BASE64码互相转换
- C#中图片与BASE64码互相转换
- C#中图片与BASE64码互相转换
- C#和JAVA实现图片和BASE64互转
- C#和JAVA利用BASE64实现图片编码解码
- 图片与base64互转
- java base64 传输图片
- java base64 传输图片
- java base64转图片
- flex属性问题以及内容居中
- 283. Move Zeroes
- HDU 4605 主席树
- 小Z的袜子 题解报告【莫队】
- [spark] RDD缓存源码解析
- C# 与 Java 通过Base64传送图片
- Anaconda3 5.0.0中配置Python 3.6 + TensorFlow环境
- 如何获取系统架构
- 逻辑回归算法背后的数学
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J.Minimum Distance in a Star Graph
- 《Java核心技术》第10版读书笔记之Chap5(3)——Object类及其equals、hashCode与toString方法
- 保研路
- C++ MFC / VS2013 之七 (对话框:为控件添加消息处理函数)
- 【图像融合】拉普拉斯金字塔融合