springboot上传文件写入数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot上传文件写入数据库相关的知识,希望对你有一定的参考价值。

参考技术A 首先导入了相应的jar包
<!--thymeleaf--><dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId></dependency><dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId></dependency><!--数据库连接--><dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId></dependency><!--mybatis整合springboot--><dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version></dependency><!--druid数据源--><dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version></dependency>1234567891011121314151617181920212223242526272829

对数据源,mybatis,和上传文件进行配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource username: root password: shw123zxc url: jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver servlet:
multipart:
max-request-size: 10MB #上传文件的最大总大小
max-file-size: 10MB #上传单个文件的最大大小mybatis:
type-aliases-package: cn.codewei.pojo mapper-locations: classpath:/mapper/*.xml1234567891011121314

然后写一个文件上传的html,注意表单的==enctype属性要设置为multipart/form-data==
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>Title</title></head><body>
<h1>文件上传</h1>
<form method="post" enctype="multipart/form-data" action="/upload">
<input type="file" name="file">
<input type="submit" value="上传">
</form></body></html>1234567891011121314

然后写一个Mapper和对应的Mapper.xml和service
@Mapper@Repositorypublic interface PhotoMapper
// 向数据库中添加图片
public int addPhoto(Photo photo);

// 从数据库中取出图片
public Photo getPhotoById(@Param("id") int id);123456789
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.codewei.mapper.PhotoMapper">
<insert id="addPhoto" parameterType="photo">
insert into image values (#id,#photo,#photo_name,#photo_type) </insert>
<select id="getPhotoById" resultType="photo">
select * from image where id=#id </select></mapper>123456789101112

在Controller中进行调用
上传
@Autowiredprivate PhotoService photoService;@Autowiredprivate Photo photo;@PostMapping("/upload")@ResponseBodypublic String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException
byte[] bytes = file.getBytes();
photo.setPhoto(bytes);
photo.setPhoto_name(file.getOriginalFilename());
photo.setPhoto_type(".jpg");

photoService.addPhoto(photo);

return "上传成功!";123456789101112131415161718

取出,在页面中显示
@RequestMapping("/getPhoto")public String getImage(HttpServletResponse response) throws IOException
Photo photo = photoService.getPhotoById(1);
byte[] photo1 = photo.getPhoto();
ServletOutputStream os = response.getOutputStream();
os.write(photo1);
os.close();
return "";123456789
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>Title</title></head><body>
<h1>首页</h1>
<img src="/getPhoto" width="200px" height="200px"></body></html>

以上是关于springboot上传文件写入数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用nodejs将文件写入特定目录并将其上传到数据库

将图像上传到目录并将图像名称写入数据库

完整版excel上传导入读写批量数据并将反馈结果写入远程exel中

Spring MVC 文件上传功能详解

Springboot整合SpringBatch完成基本案例--从数据库读取数据并写入文件

Springboot整合SpringBatch完成基本案例--从数据库读取数据并写入文件