文件上传功能Demo
控制层代码
@RequestMapping("/upload")
public ReturnValue uploadFileTest(@RequestParam("uploadFile") MultipartFile zipFile) {
return subFundValuationService.uploadFileTest(zipFile);
}
/* MultipartFile 类
*/
服务层代码
ReturnValue uploadFileTest(MultipartFile zipFile);
服务实现层代码
@Service
public class SubFundValuationServiceImpl implements SubFundValuationService {
@Override
public ReturnValue uploadFileTest(MultipartFile zipFile) {
String targetFilePath = "D:\\test\\uploadTest";
// 获取文件名
String fileName = zipFile.getOriginalFilename();
// 判断指定路径的文件夹是否存在,如果不存在就创建
File file = new File(targetFilePath);
if (!file.exists()) {
return Result.failed("指定的接收文件夹不存在");
// file.mkdirs();
}
// UUID 通用唯一识别码是由一组32位数的16进制数字所构成,是故 UUID 理论上的总数为1632=2128,约等于3.4 x 10123。也就是说若每纳秒产生1百万个 UUID,要花100亿年才会将所有 UUID 用完
// String fileName = UUID.randomUUID().toString().replace("-", "");
// String fileSuffix = getFileSuffix(zipFile);
// if (fileSuffix != null) { // 拼接后缀
// fileName += fileSuffix;
// }
File targetFile = new File(targetFilePath + File.separator + fileName);
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(targetFile);
IOUtils.copy(zipFile.getInputStream(), fileOutputStream);
} catch (IOException e) {
return new ReturnValue<>(-1, null);
} finally {
try {
fileOutputStream.close();
} catch (IOException e) {
}
}
return new ReturnValue<>(ReturnCodeAndMsgEnum.Success, null);
}
// 获取文件后缀名()
private String getFileSuffix(MultipartFile file) {
if (file == null) {
return null;
}
String fileName = file.getOriginalFilename();
int suffixIndex = fileName.lastIndexOf(".");
if (suffixIndex == -1) { // 无后缀
return null;
} else { // 存在后缀
return fileName.substring(suffixIndex, fileName.length());
}
}
}
测试界面
文件夹生成结果
UUID生成的唯一识别码由数字和字母组成,通过入参可以直接拿到文件名
附加:配置文件
spring:
servlet:
multipart:
max-file-size: 50MB
max-request-size: 50MB MB必须大写(有坑)
#单个文件最大限制:
spring.servlet.multipart.max-file-size=50Mb
#单次请求最大限制:
spring.servlet.multipart.max-request-size=70Mb
# 字母大小写未检测