功能概述第一步、引入 Maven 依赖
org.springframework.boot
spring-boot-starter-web
cn.hutool
hutool-all
${hutool.version}
文件上传功能真正需要的依赖只有spring-boot-starter-web传文件,hutool-all只是笔者平时习惯使用的一个工具类库。如果你还不了解hutool-all推荐你花点时间了解一下,很香!如官网所讲“Hutool中的工具方法来自每个用户的精雕细琢”,它能大大提高你的开发效率。
第二步,配置
# 端口号
server.port=9090
# 开启文件上传
spring.servlet.multipart.enabled=true
# 上传文件默认存储路径(文件夹)
spring.servlet.multipart.location=E:/learn-springboot-upload/upload-files
# 限制单个文件最大大小
spring.servlet.multipart.max-file-size=1MB
# 限制所有文件最大大小
spring.servlet.multipart.max-request-size=10MB
注释写得很详细了,不多说。
第三步、上传逻辑实现
1 上传文件重新命名,新的文件名格式如下:
private static final String FILE_NAME_PATTERN = "{}_{}";
第一个{}放的是上传时间,格式是yyyyMMddHHmmss,精确到秒。
第二个{}放的是上传文件的原始文件名。
2 方式一:使用org.springframework.web.multipart.MultipartFile接收上传文件
@RequestMapping("/upload/multipart")
public Object uploadMultipart(MultipartFile file) {
// 上传文件的原始文件名
String originalFilename = file.getOriginalFilename();
log.info("上传文件的原始文件名:{}", originalFilename);
// 文件名:日期_原始文件名
String fileName = StrUtil.format(FILE_NAME_PATTERN, DateUtil.format(new Date(), "yyyyMMddHHmmss"), originalFilename);
log.info("格式化后的文件名:{}", fileName);
File dest = new File(fileName);
try {
file.transferTo(dest);
} catch (IOException e) {
log.info("上传文件失败!", e);
return result(500, "上传失败!");
}
return result(200, "上传成功!");
}
3 方式二:使用javax.servlet.http.Part接收上传文件
@RequestMapping("/upload/part")
public Object uploadPart(Part file) {
String originalFilename = file.getSubmittedFileName();
log.info("上传文件的原始文件名:{}", originalFilename);
// 文件名:日期_原始文件名
String fileName = StrUtil.format(FILE_NAME_PATTERN, DateUtil.format(new Date(), "yyyyMMddHHmmss"), originalFilename);
log.info("格式化后的文件名:{}", fileName);
try {
file.write(fileName);
} catch (IOException e) {
log.info("上传文件失败!", e);
return result(500, "上传失败!");
}
return result(200, "上传成功!");
}
如果你没有自定义 MultipartResolver 对象,Spring Boot 会为你自动创建 MultipartResolver 对象,实际为 StandardServletMultipartResolver 。
如果上传的单个文件的大小超出限制,会报如下错误:
The field file exceeds its maximum permitted size of 1048576 bytes.
其中 1048576 是我设置的单个文件最大大小限制。
第四步、测试接口
我为了省时间传文件,并没有写 HTML 页面去测试接口,使用的是 Postman 工具测试接口。
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击网站首页每天更新
站 长 微 信: aiwo51889
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。