报错了我写的是项目上面src项目的一个路径他跟我保存的是C:\Users\sj2\AppData\Local\Temp\tomcat.8081.8258717013599118962\work\Tomcat-1\localhost\ROOT\src\main\resources\static\imgss\XM2307-0007-0000\shu0.png 磁盘的一个路径,我需要找到项目本地的路径
时间: 2023-07-24 15:16:03 浏览: 238
如果你想找到项目本地的路径,可以使用 `ServletContext` 对象来获取。
以下是示例代码:
```java
import org.web.multipart.MultipartFile;
import javax.servlet.ServletContext;
import java.io;
import java.io.IOException;
public class YourClassName {
private ServletContext servletContext;
public YourClassName(ServletContext servletContext) {
this.servletContext = servletContext;
}
public String saveImage(MultipartFile file, String folderPath, String newFileName) {
String originalFileName = file.getOriginalFilename();
String extension = originalFileName.substring(originalFileName.lastIndexOf(".")); // 获取文件后缀名
String newFileNameWithExtension = newFileName + extension; // 自定义文件名
try {
String absoluteFolderPath = servletContext.getRealPath(folderPath); // 获取项目本地路径
File folder = new File(absoluteFolderPath);
if (!folder.exists()) {
folder.mkdirs(); // 创建文件夹
}
File dest = new File(folder, newFileNameWithExtension);
file.transferTo(dest); // 保存图片到目标文件
System.out.println("图片保存成功:" + dest.getAbsolutePath());
return dest.getAbsolutePath(); // 返回保存图片的绝对路径
} catch (IOException e) {
e.printStackTrace();
}
return null; // 图片保存失败,返回null
}
}
```
在上述代码中,我们通过构造函数传入 `ServletContext` 对象,然后使用 `servletContext.getRealPath(folderPath)` 获取项目本地的绝对路径。
然后,我们使用该绝对路径来创建目标文件夹,并将上传的图片保存到目标文件中。
请确保在使用 `saveImage` 方法之前,已经正确初始化了 `YourClassName` 类,并将 `ServletContext` 对象传入构造函数中。
希望这次能够解决你的问题!如果还有其他疑问,请随时提出。
阅读全文