springboot2.xx配置文件上传下载路径映射
-
需求:文件上传下载中将本地磁盘路径和服务器虚拟路径相互映射,上传文件时上传至配置的本地磁盘,下载文件时访问配置的虚拟路径。
-
代码及相关配置:
yml配置磁盘路径和虚拟路径##文件服务配置 file: server: ##本地磁盘路径 dir: D:\fileUpload\ ##服务虚拟路径 path: /file/
配置类:
@Configuration public class FileServerConfig extends WebMvcConfigurerAdapter{ //本地磁盘地址 @Value("${file.server.dir}") private String localFileServerDir; //服务虚拟地址 @Value("${file.server.path}") private String localFileServerPath; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //文件的虚拟地址和本地磁盘地址映射 registry.addResourceHandler("/" + this.getLocalFileServerPath() + "/**").addResourceLocations("file:" + this.getLocalFileServerDir() + "/"); super.addResourceHandlers(registry); } public String getLocalFileServerDir() { return localFileServerDir; } public void setLocalFileServerDir(String localFileServerDir) { this.localFileServerDir = localFileServerDir; } public String getLocalFileServerPath() { return localFileServerPath; } public void setLocalFileServerPath(String localFileServerPath) { this.localFileServerPath = localFileServerPath; } }
文件上传代码:
@Value("${file.server.dir}")
private String fileServerDir;
@Value("${file.server.path}")
private String fileServerPath;
@RequestMapping("fileUpload")
@ResponseBody
public ResponseResult fileUpload(@RequestParam("file") MultipartFile file){
if(file.isEmpty()){
return ResponseResult.error("未读取到文件");
}
File fileDir = new File(fileServerDir);
if(!fileDir.exists()){
fileDir.mkdirs();
}
String fileName = file.getOriginalFilename();
String nowTime = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now());
//文件全路径
File dest = new File(fileServerDir + nowTime + fileName);
try {
//文件写入硬盘
file.transferTo(dest);
//TODO..存入数据库数据
StorageFile storageFile = new StorageFile();
storageFile.setRowGuid(UUID.randomUUID().toString());
storageFile.setCe01(fileName); //文件名
storageFile.setCe02(fileServerDir+nowTime+fileName); //文件路径
storageFile.setCe03(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()));
storageFile.setCe04(fileServerPath+nowTime+fileName); //访问路径
storageFile.setIx01(0); //是否删除 0未删除 1删除
boolean insert = storageFileService.insert(storageFile);
if (!insert) {
return ResponseResult.error("添加失败");
}
} catch (IOException e) {
e.printStackTrace();
return ResponseResult.error("文件上传失败");
}
return ResponseResult.ok();
}