使用 servlet 上下文从 spring 引导应用程序获取资源的路径
Get the Path of a resource from a spring boot aplication using servlet context
我有这个结构,由spring boot
生成
所以我想使用 sevletContext 获取文件 gastos.xlsx 的输入流。
@Autowired
private ServletContext context;
@GetMapping("/grafico")
public ResponseEntity<String> exportExcelGrafico(HttpServletResponse response){
try{
//this path returns null. What is the real path to put here?
InputStream input = context.getResourceAsStream("src/main/resources/templates/gastos.xlsx");
//returns null
input = context.getResourceAsStream("/resources/templates/gastos.xlsx");
// Returns null
input = context.getResourceAsStream("/templates/gastos.xlsx");
}
catch(){
}
正确的道路是什么?
我没有在 application.properties
上配置任何东西
Maven 或 Gradle 项目的 src/main/resources
文件夹中的内容最终会出现在您的 jar 中,而不是网络资源中。因此应该使用 class 加载器加载它,而不是使用 servlet 上下文:
MyClass.class.getResourceAsStream("/templates/gastos.xlsx")
不确定为什么将该文件放在模板下,因为...它不是模板。
我有这个结构,由spring boot
生成所以我想使用 sevletContext 获取文件 gastos.xlsx 的输入流。
@Autowired
private ServletContext context;
@GetMapping("/grafico")
public ResponseEntity<String> exportExcelGrafico(HttpServletResponse response){
try{
//this path returns null. What is the real path to put here?
InputStream input = context.getResourceAsStream("src/main/resources/templates/gastos.xlsx");
//returns null
input = context.getResourceAsStream("/resources/templates/gastos.xlsx");
// Returns null
input = context.getResourceAsStream("/templates/gastos.xlsx");
}
catch(){
}
正确的道路是什么?
我没有在 application.properties
Maven 或 Gradle 项目的 src/main/resources
文件夹中的内容最终会出现在您的 jar 中,而不是网络资源中。因此应该使用 class 加载器加载它,而不是使用 servlet 上下文:
MyClass.class.getResourceAsStream("/templates/gastos.xlsx")
不确定为什么将该文件放在模板下,因为...它不是模板。