【问题标题】:How to create downloadable URL for file that located on file system in Java?如何为位于 Java 文件系统上的文件创建可下载的 URL?
【发布时间】:2017-02-21 07:47:45
【问题描述】:

我有本地 Tomcat 服务器和 Spring 应用程序。

如何为位于文件系统上的文件(例如:C:\Files\file.smth)创建可下载的 URL(例如:http://localhost:8080/file.smth)?

谢谢!

【问题讨论】:

    标签: java spring tomcat web server


    【解决方案1】:

    只能使用 URL 访问配置的文档根目录或 Web 服务器下的文件。 (其他一切都将是一个巨大的安全漏洞)

    对于文档根目录下的文件,删除上面的部分路径,包括文档根目录,并在前面加上协议和主机。用斜杠替换所有反斜杠字符。

    示例:您的文档根是c:\www\my_site\,并且您想为c:\www\my_site\some\path\my_file.txt 创建一个URL,结果将是`http://localhost:8080/some/path/my_file.txt'

    【讨论】:

      【解决方案2】:

      在 Spring 中我们可以这样做:提供 GET 请求以从下载链接获取文件。

       @RequestMapping("/models/{fileId}.smth")
              @ResponseBody
              public HttpEntity<byte[]> getFile(@PathVariable String fileId) throws IOException {
                  byte[] model = org.apache.commons.io.FileUtils.readFileToByteArray(new File( "C:/folder/" + fileId + ".smth"));
                  HttpHeaders headers = new HttpHeaders();
                  headers.setContentType(MediaType.MULTIPART_FORM_DATA);
                  headers.setContentLength(model.length);
                  return new HttpEntity<byte[]>(model, headers);
              }
      

      【讨论】:

        猜你喜欢
        • 2016-08-10
        • 1970-01-01
        • 2019-08-12
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        相关资源
        最近更新 更多