前言
文件的上传和下载是所有后端程序员会经常用到的操作,最近Springboot项目恰好有文件上传与下载的需求,为了增强记忆,就记录下来,若是其中有哪些不足的地方,请指出来,增强学习交流。
配置文件准备工作
首先,先在 application.yml 配置文件中配置上传文件限制,这个根据自身需求来做调整。
其次,指定需将文件上传到哪个服务器下的具体路径。
工具类准备工作
UploadFolderEnum 类主要是将文件存在服务器具体某个文件下,以及其文件格式等。
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public enum UploadFolderEnum {
IMAGE("imageWeb","jpg","jpg,png,jpeg"),
PDF("userPdf","pdf","pdf"),
HTML("userHtml","html","html"),
IMAGE_APP("imageApp","jpg","jpg,png,jpeg"),
DOC("userDoc","doc","doc"),
EXCEL("config","xlsx","xlsx"),
UploadFolderEnum(String folderName,String suffix) {
this.folderName = folderName;
this.suffix=suffix;
}
UploadFolderEnum(String folderName,String suffix,String fileType) {
// 文件路径
this.folderName = folderName;
// 默认后缀
this.suffix=suffix;
// 文件 准许后缀类型
this.fileType=fileType;
}
private String folderName;
private String suffix;
private String fileType;
public String getFolderName() {
return folderName;
}
public String doDateFilePath(){
return "/"+this.folderName+"/"+ getNowDate();
}
public String getNowDate(){
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String time = df.format( new Date( ) );
return time;
}
public String getDefaultFileName(String suffix){
if(fileType.contains(suffix)){
return CommonUtil.retrieveUUID()+"."+suffix;
}
return getDefaultFileName();
}
public String getDefaultFileName(){
return CommonUtil.retrieveUUID()+"."+suffix;
}
}
单文件上传
引入服务器IP地址,文件存放路径,文件命名格式。
单文件上传的核心代码,这是相对比较简单的方式,都是一些业务代码。
@PostMapping("/uploadFile")
@ApiOperation(value = "文件上传 单文件")
public ObjectRestResponse Upload(@RequestParam("file") MultipartFile file) {
//记录日志
log.info("开始上传文件!");
//文件判断为空
if (file.isEmpty()) {
return ObjectRestResponse.error("上传失败,请选择文件");
}
//获取文件原始名称
String fileOriginalName = file.getOriginalFilename();
//设置文件前缀
String fliePrefix;
//设置文件后缀
String fileSuffix;
fliePrefix = UUID.randomUUID().toString().replace("-", "");
fileSuffix = fileOriginalName.split("\\.")[1];
String newfilePath = image.doDateFilePath() + "/";
//唯一服务地址
String newfilePathOnly = basePath + newfilePath;
//判断地址是否存在
File fileUIS = new File(newfilePathOnly);
//如果不存在文件夹创建文件夹
if (!fileUIS.exists()) {
fileUIS.mkdirs();
}
String OnlyStr = newfilePathOnly + fliePrefix + "." + fileSuffix;
//设置文件载入到的地址
File dest = new File(OnlyStr);
try {
file.transferTo(dest);
log.info("文件:" + fliePrefix + "." + fileSuffix + "上传成功");
String filePath = fileIp + newfilePath + fliePrefix + "." + fileSuffix;
Map<String, Object> object = new HashMap<>();
object.put("filePath", filePath);
object.put("UUID", fliePrefix);
return ObjectRestResponse.success(object);
} catch (IOException e) {
log.error(e.toString(), e);
}
return ObjectRestResponse.error("上传失败!");
}
这就是简单的单文件上传到服务器上的一种方式,若是存在不足,欢迎大家指出!!!