使用mysql存储文件数据

2022-10-26 09:57:40

使用背景:项目中需要使用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());
  • 作者:看见雨声
  • 原文链接:https://blog.csdn.net/qq_38241225/article/details/113876747
    更新时间:2022-10-26 09:57:40