Java 保存图片到数据库时,为啥要对图片进行base64编码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 保存图片到数据库时,为啥要对图片进行base64编码相关的知识,希望对你有一定的参考价值。
我在网上总能看到相关的代码:保存图片到数据库中时,总会对图片进行Base64编码。如:http://blog.csdn.net/hfhwfw/article/details/5544408 。我在数据库中保存图片的字段类型为 Blob,我直接保存图片相应的字节数组到 Blob即可。不明白为什么还要对图片的字节数组做 Base64编码。
首先这是一种SB做法,图片保存到数据库这个很浪费数据库资源, 通常情况下图片等文件都是用ftp服务器来存储文件的. 为什么要用base64进行编码是因为, base64会把文件这个文件转换成字符串, base64编码后得到的是一组字符串, 为什么要用blob类型, 因为这个类型可以存储4GB数据, 数据库中普通的 varchar varchar2 text等类型都有长度的限制 参考技术A 保密和字符处理追问那怎么保存到 Blob 类型字段中?
参考技术B 因为二进制数据无法使用格式化的传输(如xml、json),而Base64提供了剔除特殊字符(如<、/)的转换,所以有时候需要传输二进制的时候就考虑进行Base64编码。考虑一个接口可能会同时返回一个图片的数据,加上这个图片的说明,使用json返回的时候就必须要对图片信息进行Base64编码。否则,你只能返回一个url,然后让客户端再使用这个url获取图片信息。
上面只是讨论Base64的用处,至于存储在数据库是什么无所谓。本人还是倾向于原始的二进制数据,毕竟如果只有一个地方存储这些数据,那么保存原始数据能保证不会失去任何精度。
以上是关于Java 保存图片到数据库时,为啥要对图片进行base64编码的主要内容,如果未能解决你的问题,请参考以下文章