FileSystemResource:如何设置相对路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FileSystemResource:如何设置相对路径相关的知识,希望对你有一定的参考价值。

我有这样的项目结构:

enter image description here

并跟随控制器:

@RestController
public class StubController {

    @GetMapping("/stub_mapping_template")
    public FileSystemResource getMappingTemplate() {
        return new FileSystemResource("/stub/mapping_template.csv");
    }
}

但是当我在浏览器中打开时

localhost:8080/stub_mapping_template

没有下载。

在调试中我试图输入:

new FileSystemResource("/stub/mapping_template.csv").exists()

它返回false

我试着写:

new FileSystemResource("stub/mapping_template.csv").exists()

但结果是一样的

答案

而不是FileSystemResource使用ClassPathResource

 @GetMapping("/stub_mapping_template")
    public FileSystemResource getMappingTemplate(HttpServletResponse response) {
      ClassPathResource classPathResource = new ClassPathResource("/stub/mapping_template.csv");
      File file = classPathResource.getFile();

      InputStream in = new FileInputStream(file);

      response.setContentType(....);
      response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
      response.setHeader("Content-Length", String.valueOf(file.length()));
      FileCopyUtils.copy(in, response.getOutputStream());
      response.flushBuffer();
}
另一答案

也许FileSystemResource获取文件的完整URL。其中一种技术是,从PC上的“我的电脑”复制路径。并从网址的开头继续删除

以上是关于FileSystemResource:如何设置相对路径的主要内容,如果未能解决你的问题,请参考以下文章

Spring之ResourceLoader加载资源

SpringBoot的文件下载

C语言里面如何设置相对路径

pb如何设置图片相对路径

wsdlLocation如何设置成相对的

《Spring揭秘》——IOC梳理3(资源加载,国际化)