Springboot 文件上传
项目告一段落,整理一下项目中踩过的坑,引以为戒。
SpringBoot上传文件踩过的坑…
public class UploadFileRest {
private static Logger logger = LoggerFactory.getLogger(UploadFileRest.class);
@Value("${upload.server}")
private String server;
@Value("${upload.port}")
private String port;
@Value("${getImage.port}")
private String getImagePort;
@Value("${upload.savePath}")
private String savePath;
@PostMapping(value = "uploadFile")
public FileVO uploadFile(HttpServletRequest request) throws IllegalStateException, IOException {
System.out.println("upload...");
//生成当前时分秒
try {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获取上传的文件
MultipartFile multiFile = multipartRequest.getFile("file");
FileVO fileVO =null;
//获取上传的全名
String originalFilename = multiFile.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
String subPath = DateUtils.getDate();
String fileName = DateUtils.getDate("yyMMddHHmmssSSS" + (new Random()).nextInt(9)) + "." + suffix;
//String finalPath = path + subPath;
File file = new File(savePath + "/files/" + subPath + "/");
if (!file.exists()) {
file.mkdirs();
}
multiFile.transferTo(new File(savePath + "/files/" + subPath + "/" + fileName));
String imgUrl = server +":"+getImagePort+ "/files/" + subPath + "/" + fileName;
fileVO = new FileVO();
fileVO.setOriginalFilename(originalFilename);
fileVO.setSize(multiFile.getSize());
fileVO.setSuffix(suffix);
fileVO.setFileUrl(imgUrl);
System.out.println("--------------------:" + imgUrl);
} catch (Exception e) {
logger.error(e.getMessage(), e);
System.out.println("上传失败!");
}
return fileVO;
}
}
在启动类配置Bean
设置上传图片临时文件
设置上传的图片的大小
/**
- 文件上传配置
- @return
*/
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize(“10MB”);
factory.setMaxRequestSize(“50MB”);
factory.setLocation("/home/tmp");
return factory.createMultipartConfig();
}
配置文件 application.properties 修改
server.max-http-header-size=102400000
server.tomcat.max-http-post-size=102400000
请同时记得检查服务器 nginx 配置 上传文件大小是否同步修改限制!