使用背景:项目中需要使用excel导入,提前设置好excel模板供导入前下载使用,但是由于容器部署临时目录存储模板重启会完全销毁,使用excel流现场构建又不太灵活,每次更新模板需要重新调整代码,使用sftp可以解决但是又增加新的开销。这个时候考虑使用数据库存储模板,更新和下载都非常方便又没有太多额外的代码负担。
1、BLOB类型介绍
(1)BLOB类型的含义
BLOB (binary large object),用来存储二进制大对象的字段类型。
BLOB往往是一个大文件,如图片,excel等(例如:上传、下载或者存放到一个数据库)。
处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。(2)BLOB类型系列
MySQL中,BLOB是个类型系列,共包括四种BLOB类型:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大尺寸不同。字段类型 最大长度(字节) 存储需求
TinyBlob 255 值的长度加上用于记录长度的1个字节(8位)
Blob 65K值的长度加上用于记录长度的2个字节(16位)
MediumBlob 16M值的长度加上用于记录长度的3个字节(24位)
LongBlob 4G 值的长度加上用于记录长度的4个字节(32位)。
2、具体使用方式:
- mysql中数据定义:blob
- java项目中实体类字段定义: InputStream类型
- web上传MultipartFile类型文件excel通过InputStream inputStream = new BufferedInputStream(excel.getInputStream());