我正在创建一个spring web项目,我将上传一个csv文件并将其保存到数据库中。我需要将文件保存在项目的相对路径中,以便可以通过url访问它。例如:localhost:port / project_name / file_name 但是我每次都使用servlet上下文或URL获取绝对路径。 请帮我解决弹簧控制器中的相对路径。
答案 0 :(得分:1)
您可以将文件保存在任何位置。我特别在tomcat的目录中创建一个文件夹,并通过Java System Property System.getProperty("catalina.base");
然后,您可以选择其中一种可能性:
例如,我将文件保存在:
System.getProperty("catalina.base")+File.separator+"mydata"+File.separator+filename;
我可以创建控制器:
@Controller
public class MyDataController {
@RequestMapping("/mydata/{filename}")
public String helloWorld(@PathVariable("filename") String filename) {
String path = System.getProperty("catalina.base")+File.separator+"mydata"+File.separator+filename;
return new FileSystemResource(new File(path));
}
}
或在tomcat中声明一个上下文创建文件: [tomcat6directory] /conf/Catalina/localhost/appcontext#mydata.xml 包含
<Context antiResourceLocking="false" privileged="true" path="/mydata" docBase="${catalina.base}/mydata" />