Spring Boot上传文件(带进度条)
Spring Boot 上传文件(带进度条)#
配置文件
spring:
freemarker:
template-loader-path: classpath:/static/
##Spring Boot 2.x 配置上传文件大小
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
InfoMsg Bean##
public class InfoMsg {
private String code;
private String msg;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
Controller##
@Controller
@RequestMapping("/upload")
public class UploadController {
private static final String TMP_PATH = "D:/projects/tmp";
@GetMapping
public String fileUp() {
return "upload";
}
@ResponseBody
@PostMapping
public InfoMsg fileUpload(@RequestParam("uploadFile") MultipartFile file) {
InfoMsg infoMsg = new InfoMsg();
if (file.isEmpty()) {
infoMsg.setCode("error");
infoMsg.setMsg("Please select a file to upload");
return infoMsg;
}
try {
File tmp = new File(TMP_PATH, file.getOriginalFilename());
if (!tmp.getParentFile().exists()) {
tmp.getParentFile().mkdirs();
}
String[] fileInfo = getFileInfo(tmp);
File orRenameFile = createOrRenameFile(tmp, fileInfo[0], fileInfo[1]);
if (tmp.renameTo(orRenameFile)) {
file.transferTo(orRenameFile);
}else {
file.transferTo(tmp);
}
infoMsg.setCode("success");
infoMsg.setMsg("You successfully upload" + file.getOriginalFilename());
} catch (IOException e) {
infoMsg.setCode("error");
infoMsg.setMsg("Uploaded file failed");
}
return infoMsg;
}
/**
* 创建或重命名文件
* ps:sss.jpg sss(1).jpg
* @param from
* @param toPrefix
* @param toSuffix
* @return
*/
public static File createOrRenameFile(File from, String toPrefix, String toSuffix) {
File directory = from.getParentFile();
if (!directory.exists()) {
if (directory.mkdir()) {
System.out.println("Created directory " + directory.getAbsolutePath());
}
}
File newFile = new File(directory, toPrefix + toSuffix);
for (int i = 1; newFile.exists() && i < Integer.MAX_VALUE; i++) {
newFile = new File(directory, toPrefix + "(" + i + ")" + toSuffix);
}
if (!from.renameTo(newFile)) {
System.out.println("Couldn't rename file to " + newFile.getAbsolutePath());
return from;
}
return newFile;
}
/**
* 获取File的 . 前后字串
* @param from
* @return
*/
public static String[] getFileInfo(File from) {
String fileName = from.getName();
int index = fileName.lastIndexOf(".");
String toPrefix = "";
String toSuffix = "";
if (index == -1) {
toPrefix = fileName;
} else {
toPrefix = fileName.substring(0, index);
toSuffix = fileName.substring(index, fileName.length());
}
return new String[]{toPrefix, toSuffix};
}
}
页面upload.ftl 使用的是freemarker##
Spring Boot file upload example
效果展示##

浙公网安备 33010602011771号