日期:2014-05-17  浏览次数:21039 次

C#与JAVA Base64编码问题~图片不能还原?
情况是这样的:
C#调用JAVA的webservice,把数据插入系统数据库,其中有一个xml节点是图片的base64编码,封装成xml文档后,抛给webservice,导入成功后,oracle数据库中的图片是黑的,而且像矩阵式的方形点阵。

有点郁闷,一天了还是没有解决,想请教下大家,谢谢!

------解决方案--------------------
最近也在做类似这样结构的系统。。但是还没涉及到图片的问题。。

是不是两边的编码不统一导致的。

你分析分析发过来的数据包。。
------解决方案--------------------
JAVA中输出看看
http://topic.csdn.net/u/20090903/16/41cf7016-68a8-431f-a325-d383ac1b6c52.html
------解决方案--------------------
什么叫做“图片的base64编码”?byte[]的base64编码这可以理解。但是图片的base64编码?你是否测试过你的byte[](base64编码之前的)可以反过来正确显示为图片?

------解决方案--------------------
引用:
我是直接从oracle数据库中用select * from table语句获取了图片对象image1(object),然后用(byte[])image1,强制转换为字节数组


这个地方要及时“打住”!

你得到的字节数组还是原来的图片吗?测试一下!写一个程序,把你的字节数组保存成文件,然后用一个看图片的程序打开看看。如果不是,你传给别人,别人可能无法。
------解决方案--------------------
你在本机上试下  先编码 然后解码 看出错不
------解决方案--------------------
引用:
引用:
我是直接从oracle数据库中用select * from table语句获取了图片对象image1(object),然后用(byte[])image1,强制转换为字节数组


这个地方要及时“打住”!

你得到的字节数组还是原来的图片吗?测试一下!写一个程序,把你的字节数组保存成文件,然后用一个看图片的程序打开看看。如果不是,你传给别人,……


可以的 我也这样存图片  用强制转换可以转为BYTE[] 
------解决方案--------------------
用你base64之前的数据和oracle中存的数据比较一下。一样就没有问题了。

Base64编码解码都是标准,java和.net的支持都应该没有问题。

------解决方案--------------------
引用:
刚刚又试过了,直接读取本地图片,转换为byte数组后,再转为base64,抛给Java的webService后,图片在oracle当中是还是黑的,这说明什么呢?

C#转base64编码的代码都试过了,手写的和自带的API(ToBase64String方法)都是一样的结果,黑的!

这说明问题在webService。

我刚才用JAVA编写了一个Base64转换的程序,和.NET的一起对比了下,都从同一个文件中读取前1024个字节进行Base64转换,转换后得到的字符串是一模一样的。这样你就应该可以排除在Base64转换上的问题了,而是要看webService怎么处理这二进制字符串(比如是否因为过长,自动截断了数据之类的)。