图片上传存储数据库的2种方法讲解(Mysql)
程序员文章站
2022-05-03 20:21:24
数据库Mysql存储,读取图片
在项目中,很多情况下都对图片的存储读取有需求,而图片怎样存入数据库的方式可谓是五花八门,现在就整理一下数据库与图片不可不说的关系。
1,路径存储...
数据库Mysql存储,读取图片
在项目中,很多情况下都对图片的存储读取有需求,而图片怎样存入数据库的方式可谓是五花八门,现在就整理一下数据库与图片不可不说的关系。
1,路径存储在数据库:
数据库的存储资源是有限的,最起码比磁盘比起来花费会昂贵很多,不可能将图片视频等存入数据库,那么最有可能的就是中介了,即数据库中存入的只是图片或者视频的地址,路径等,并不存储真正的东西,需要的时候就去找中介要地址,然后得到想要的东西。可以直接存储文件路径,也可以转化后存取,个人比较喜欢转化后存取,这样对头像这类信息量比较大,又避免重复来说是一个不错的选择,为了避免重复可以对文件命名时采用java中的UUID实现,UUID是根据电脑的硬件网卡,当前时间(毫秒级)等多种数据组合,全球唯一UUID uuid = UUID.randomUUID();当然也可以存取URL,这是针对网页数据来说,等使用时,再用URL请求进行图片的加载。
2,使用blob(binary large Object)二进制大对象存储:
当然为了能用数据库进行存储,可以将图片转化为二进制对象流,当需要用到时,再以流对象的方式取出,转化为所需要的格式。具体的方式为定义输入输出流,inputstream,outputstream,亦可以使用bufferinputstream,和bufferoutputstream。存入数据库的过程中,使用preparestatement.setBinaryStream.完成二进制的写入。
读取时用inputstream输入流进行接收,然后转化为相应的图片格式。注:mysql中blob不能设置默认值,所以一旦存入图片有误后,会发生读取错误,因此需要对出错进行预判。