说明:如果项目上传的文件是存储在本地的,为了项目可以在其他电脑上也可能正常运行,可以将文件上传至项目的static文件夹里,并将文件路径保存至数据库中,前端显示时使用也可以通过该路径访问。要想获取到本地项目static文件夹的路径,并且保证项目在其他电脑上运行,就需要代码中不能把路径写死,而是动态获取项目根目录。
假设目前static文件夹下有个文件夹,images,用来存放上传的图片文件,动态获取该目录有以下两种实现方式:
方式一:ResourceUtils
ResourceUtils是Spring提供的工具类,可使用该工具类的getURL(“static”)方法获取项目中的static文件夹的路径,后面再拼接上自定义的路径
// 获取项目中images文件夹的路径
String path1 = ResourceUtils.getURL("static").getPath() + "/images";
System.out.println("path1 = " + path1);
方式二:FileUtil
FileUtil是hutool提供的工具类,使用该工具类的getWebRoot()方法,可获取当前未知的根目录,所以要想该方法能获取到正确的路径,该方法需要在src/main目录下执行。
使用前先添加依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.6</version>
</dependency>
@Test
public void getPath2() {
System.out.println("FileUtil.getWebRoot().getPath() = " + FileUtil.getWebRoot().getPath());
}
在测试类中执行,获取到测试模块中的路径去了
import cn.hutool.core.io.FileUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.FileNotFoundException;
@RestController
public class Demo {
@RequestMapping("/path")
public String getPath() throws FileNotFoundException {
// 获取项目中images文件夹的路径
String path2 = FileUtil.getWebRoot().getPath() + "\\src\\main\\resources\\static\\images";
System.out.println("path2 = " + path2);
return "OK";
}
}
需要在src/main路径下,即正常的项目中执行才能获取到想要的路径