SpringBoot入门建站全系列(九)文件上传功能与下载方式
Spring对文件上传做了简单的封装,就是用MultipartFile这个对象去接收文件,当然有很多种写法,下面会一一介绍。
文件的下载很简单,给一个链接就行,而这个链接怎么生成,也有很多方式,下面也会讲解下常用的方式。
项目地址: 品茗IT-同步发布
品茗IT 提供在线支持:
一键快速构建Spring项目工具
一键快速构建SpringBoot项目工具
一键快速构建SpringCloud项目工具
一站式Springboot项目生成
Mysql一键生成Mybatis注解Mapper
如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。
一、配置
本文假设你已经引入spring-boot-starter-web。已经是个SpringBoot项目了,如果不会搭建,可以打开这篇文章看一看《SpringBoot入门建站全系列(一)项目建立》。因为文件上传和下载不需要引入额外的jar包了。但是需要做如下配置:
application.properties 中需要添加下面的配置:
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=50MB
这里,
- spring.servlet.multipart.max-file-size是对单个文件大小的限制。
- spring.servlet.multipart.max-request-size是对单次请求的大小进行限制
至此,已经可以正常的进行上传下载了,就剩下写代码了。
二、文件上传的几种方式
2.1 单个文件上传
在Controller的RequestMapping注解的方法参数中,直接将MultipartFile作为参数传递进来。
package com.cff.springbootwork.web.file;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.cff.springbootwork.dto.ResultModel;
import com.cff.springbootwork.service.UploadService;
@RestController
@RequestMapping("/file")
public class FileRest {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Value("${upload.static.url}")
private String uploadStaticUrl;
@Autowired
UploadService uploadService;
@RequestMapping("/upload")
public ResultModel upload(@RequestParam("files") MultipartFile file) {
try {
if (file.isEmpty()) {
return ResultModel.error("文件不能为空!");
}
String fileName = uploadService.saveUploadFil