其实这里涉及一个上传文件大小的限制,这个我等会再说
话不多说,咱们直接上Demo 就从控制层开始吧
(代码截图也封上 方便如果这种的小菜鸡阅读)
(代码也整过来吧 方便咱们copy 到时候直接改就行了)
/*
-
consumes= { MediaType.MULTIPART_FORM_DATA_VALUE } 指定传输数据为二进制类型,比如图片、mp3、文件
-
produces=”application/json;charset=UTF-8″ 设置返回数据的类型以及编码
-
*/
@PostMapping(value
= “/import”, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}, produces = “application/json;” +
“charset=UTF-8”)
public CommonResponse uploadFile(
@RequestParam(value
= “file”) MultipartFile file) throws UnsupportedEncodingException {
return CommonResponse.success(colophonService.uploadFile(file));
}
-
Service层
-
-
String uploadFile(
MultipartFile
file);
-
实现类
-
-
@Value(“${upload.version.path}”)
private
String realPath;
-
@Value
注解将变量进行自动注入 (这里注入的这个其实是我要把文件上传到的地方,因为只是个Demo,所以我就让他传到Windows好了,Linux同理)它在配置文件里是这样的,哦对了忘了告诉你这个格式是
.properties文件
- 正在上传…重新上传取消
-
实现方法,它来了(代码截图)
-
-
代码
-
/*
* @Transactional 开启事务
* propagation = Propagation.REQUIRED 假如当前正要执行的事务不在另外一个事务里,那么就起一个新的事务
* rollbackFor = {Error.class, Exception.class} 任何异常都回滚
* */
-
@Override
@Transactional(propagation = Propagation.
REQUIRED
, rollbackFor = {Error.
class
, Exception.
class
})
public
String uploadFile(
MultipartFile
file) {
File targetFile =
new
File(realPath);
//获取指定路径 也就是咱们刚说的要上传的位置
if
(!targetFile.exists()) {
//如果指定文件夹不存在
targetFile.mkdirs();
//创建文件夹
}
// 原文件名称 file.getOriginalFilename()
// 从父路径名字符串和子路径名字符串创建新的 File实例。这个File方法的话 就自己去看源码吧
File upload =
new
File(realPath, file.getOriginalFilename());
try
{
//InputStream和File相互转化
org.apache.commons.io.FileUtils.
copyInputStreamToFile
(file.getInputStream(), upload);
}
catch
(Exception e) {
log
.info(“导入失败”, e);
}
return
file.getOriginalFilename();
}
-
到这里也就执行成功了,但是在上面咱说了 这个是有文件大小限制的,如果上传文件过大,那肯定会报异常啦,别急我告诉你这玩意咋整
-
1、首先咱们要在配置文件里配置一下
文件可接收到的大小限制
-
-
multipart.maxFileSize
=2000MB
multipart.maxRequestSize
=2500MB(这是我所使用的SpringBoot版本)
-
这里涉及一个相关SpringBoot版本的位置格式
-
Spring Boot 1.3.x或者之前
multipart.maxFileSize=100Mb
multipart.maxRequestSize=1000Mb
Spring Boot 1.4.x
spring.http.multipart.maxFileSize=100Mb
spring.http.multipart.maxRequestSize=1000Mb
Spring Boot 2.0之后
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=1000MB
当你配置完之后启动项目调用方法会发现(⊙o⊙)…卧槽!怎么还不行,别急你在启动类再加个东西试试呢?
@Bean
public
MultipartConfigElement multipartConfigElement(@Value(“${multipart.maxFileSize}”)String maxFileSize, @Value(“${multipart.maxRequestSize}”) String maxRequestSize) {
MultipartConfigFactory factory =
new
MultipartConfigFactory();
factory.setMaxFileSize(DataSize.
parse
(maxFileSize));
factory.setMaxRequestSize(DataSize.
parse
(maxRequestSize));
return
factory.createMultipartConfig();
}
到这里也就完事了,当然可能也有些像我一样的菜鸡不知道这种上传文件应该如何测试,那么咱们就用postman来唠一唠吧
作者也是个刚入行的小垃圾 写的不对的地方请各位哥哥们批评指正