文件经Base64加密后,上传下载问题

最近这个问题搞了好几天,文件经Base64加密后,写入服务器的某一目录下,发现存下来的文件和原始文件不一致!

原文件上传过程:

1)文件a通过前台Base64加密,形成一个String,我们称为originEnCodeStr

2)后台rest接口获取到加密后的结果originEnCodeStr

3)将originEnCodeStr经过Base64解密为originBytes

4)将originBytes转化为String,称为strToSave

5) 调用java函数,将strToSave保存到文件中

问题就出在步骤4),因为当前传入的文件是ASCII存储的,经过Base64可以加密为一个UTF-8的String类型字串,但该字串解密后,是一个byte[],如果把byte硬转为String,就发生了一次编码的转化,后面的strToSave已经是转码后的结果了,存入文件中,内容已经改变 了。

我们需要将4)去掉,然后5)中直接使用java的写bytes的文件写入方式。

下载同理。

注意:以后对文件的存储,最好都已bytes存储,这样都是二进制,不会发生转码。很多时候我们使用了String存储,文件也正确,仅仅是因为当前文件正好就是UTF-8这种格式的编码。

猜你喜欢

转载自www.cnblogs.com/hliy032/p/10453430.html