mysql存储文件
使用mysql存储文件在项目开发过程中,遇到了要使用mysql存储文件的问题,鉴于之前总是在数据库中总是保存字段信息,很少保存文件类型的数据。在mysql中保存文件类型使用的数据类型主要为MediumBlob,其中也有其他类型数据:①TinyBlob类型最大能容纳255B的数据②Blob类型最大能容纳65KB的③MediumBlob类型最大能容纳16MB的数据④LongBlob类型最大能容纳4GB
·
使用mysql存储文件
在项目开发过程中,遇到了要使用mysql存储文件的问题,鉴于之前总是在数据库中总是保存字段信息,很少保存文件类型的数据。
在mysql中保存文件类型使用的数据类型主要为MediumBlob,其中也有其他类型数据:
①TinyBlob类型 最大能容纳255B的数据
②Blob类型 最大能容纳65KB的
③MediumBlob类型 最大能容纳16MB的数据
④LongBlob类型 最大能容纳4GB的数据
该类型是mysql数据库中的二进制对象,可以保存图像、音乐、文件等资源。
下面结合mybatis-plus进行数据的插入和取出操作,使用SpringBoot测试单元,进行操作测试。
Spring Boot项目搭建以及相关配置均不在赘述,主要是进行操作记录。
pojo层:
@Data//使用lomBok注解
public class DocumentBak {
private String id;
private String title;
private String tagId;
private String fileLocation;
private String status;
private String suggest;
private byte[] file;
}
dao层文件
package com.lisir.task.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lisir.task.pojo.DocumentBak;
public interface FileDao extends BaseMapper<DocumentBak> {
int save(DocumentBak documentBak);
}
测试单元测试:
进行插入测试:
@SpringBootTest
class TaskApplicationTests {
` @Resource
private FileDao fileDao;
@Test
void saveFile(){
DocumentBak documentBak = new DocumentBak();
InputStream file =null;
byte[] finalBytes =null;
try {
file = new FileInputStream("C:\\Users\\lisir\\Desktop\\sql文件\\JAVA程序员工作常用英语(细心整理).doc");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
int temp;
while ((temp = file.read(bytes)) != -1) {
outputStream.write(bytes, 0, temp);
}
finalBytes = outputStream.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
documentBak.setId(UUID.randomUUID().toString().substring(0,7));
documentBak.setFileLocation("F:\\DTLFolder\\2021\\08\\08");
documentBak.setStatus("0");
documentBak.setSuggest("");
documentBak.setFile(finalBytes);
if (fileDao.insert(documentBak)>0){
System.out.println("插入成功");
}else System.out.println("failed!!");
}
}
tips:在设置文件字段时,将资源文件转换成为byte[],在进行保存
结果:
数据库:
从数据库中取出文件
在同一个单元测试项目中,使用以下操作是;
@Test
void selectFile(){
DocumentBak e = fileDao.selectById("ec66b2e");
byte[] bytes = e.getFile();
String filePath = "C:\\Users\\lisir\\Desktop\\sql文件\\test\\";
File file = new File(filePath+"nice.doc");
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(bytes,0,bytes.length);
if(file.exists()){
System.out.println("success!!");
}else System.out.println("fail!!");
fos.flush();
fos.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
(IOException ex) {
ex.printStackTrace();
}
}
结果:
更多推荐
已为社区贡献1条内容
所有评论(0)