将springboot项目部署到服务器,但原来很多地方写了绝对路径,所以我要做一些修改,原代码如下
@ApiOperation(value = "导入数据")
@PostMapping("/Data")
public String StoreDataBase(MultipartFile file) throws Exception {
try
{
String folder = "/Users/hjz/Documents/本科毕业设计/青藏科考/20210126测试/2020青藏科考滇藏线_07.23拷/images";
// 文件夹
File imgFolder = new File(folder);
// 获取文件名
String fname = file.getOriginalFilename();
// 获取文件后缀
String ext = "." + fname.substring(fname.lastIndexOf(".")+1);
//获取时间字符串
String dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now());
// 生成新的文件名
String newFileName =dateTimeFormatter+ StringUtils.getRandomString(2) + ext;
// 文件在本机的全路径
File filePath = new File(imgFolder, newFileName);
file.transferTo(filePath);
return collectPointService.addData(newFileName);
}
catch (Exception e){
e.printStackTrace();
return "";
}
}
然后我想把保存路径变为resources下的static静态资源保存
所以我修改了代码如下
@ApiOperation(value = "导入数据")
@PostMapping("/Data")
public String StoreDataBase(MultipartFile file) throws Exception {
try
{
String staticPath = ClassUtils.getDefaultClassLoader().getResource("static").getPath();
String folder = staticPath+"/imagefile";
// 文件夹
File imgFolder = new File(folder);
// 获取文件名
String fname = file.getOriginalFilename();
// 获取文件后缀
String ext = "." + fname.substring(fname.lastIndexOf(".")+1);
//获取时间字符串
String dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now());
// 生成新的文件名
String newFileName =dateTimeFormatter+ StringUtils.getRandomString(2) + ext;
// 文件在本机的全路径
File filePath = new File(imgFolder, newFileName);
file.transferTo(filePath);
return collectPointService.addData(newFileName);
}
catch (Exception e){
e.printStackTrace();
return "";
}
}
但是报错如下
java.io.IOException: java.io.FileNotFoundException: /Users/hjz/Desktop/Final%202/vue/vue-server/target/classes/static/imagefile/20220305154511ss.db (No such file or directory)
at org.apache.catalina.core.ApplicationPart.write(ApplicationPart.java:122)
首先我想问一下为了可以部署使用将文件存入静态资源的做法是否可行,可行的话请问应该如何解决上面遇到的问题呢