先说一下需求:用webservice实现文件传输,并且客户端只能接收字符串。需求比较变态,因为是要和以前的PB程序进行整合,没办法。
经过长时间的测试,发现两种方法:
1、JAVA读文件--二进制--转化成字符串--二进制--文件。这种方法在二进制转字任串的时候必须用iso8859-1编码,同理字符串到二进制也要用iso8859-1,否则会丢失数据,最后生成文件时错误。
2、JAVA读文件--二进制--BASE64加密--二进制---字符串---二进制---base64解密--二进制--文件。这种方法的好处是不要求编码方式,缺陷是base64加密会使数据量增加1/3。
因为考虑到客户端编码格式不是iso8859-1,所以采用了第二种方法
上测试代码
- File file=new File("d:\\070728_edu_ziyuan02.jpg");
- InputStream tem=new FileInputStream(file);
- byte[] temp = new byte[tem.available()];
- tem.read(temp);
- //String imgstr = new String(temp,"iso8859-1");
- //byte[] bt = imgstr.getBytes("iso8859-1");
- temp = Base64.encodeBase64(temp);
- String result = new String(temp);
- byte[] bt = result.getBytes();
- bt = Base64.decodeBase64(bt);
- File bfile=new File("d:\\11.jpg");
- FileOutputStream fos = new FileOutputStream(bfile);
- fos.write(bt);
- fos.close();

本文介绍了一种使用Base64加密的方法来解决文件传输中遇到的编码问题,确保文件在不同编码环境下能够正确传输。通过将文件转换为二进制,再进行Base64加密,最后解密并恢复原始文件,实现了文件的跨编码安全传输。


2193

被折叠的 条评论
为什么被折叠?



