问题描述
做项目总少不了图片或者文件,那么我想这个类里存图片(文件)的url,可上传上来的是文件。那么应该如何做才是最好的方式呢?以下展示个人在springboot项目中是如何把图片上传到服务器的。
实操练习
项目主要依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!-- 添加servlet依赖模块 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!-- 添加jstl标签库依赖模块 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--添加tomcat依赖模块.-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
以图书上传为例,最简易的形式(书号、书名、书的图片存放地址).。数据库用的mysql,以jsp上传为例(因为简单,emmm)
实体类
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Book implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String name;
private String imgUrl;
}
mapper和service层
public interface BookMapper extends BaseMapper<Book> {
}
public interface BookService extends IService<Book> {
}
public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService {
}
好,下面进入正题,思路是这样的:我们通过一个vo类来接收前端的提交的信息,然后进行图片上传,上传后将其转为url,再放到实体对象中,然后存到数据库。
Vo类
大体与实体类一致,只不过url改成了文件类型的img
@AllArgsConstructor
@NoArgsConstructor
@Data
public class BookVo implements Serializable {
private Integer id;
private String name;
private MultipartFile img;
}
Controller层
@Controller
@RequestMapping("//book")
public class BookController {
@Autowired
private BookService bookService;
@Autowired
private FileService fileUtil;
@PostMapping("/upload")
public String upload(BookVo vo)