如何为Java中的文件系统上的文件创建可下载的URL?

时间:2016-10-12 13:23:10

标签: java spring tomcat web server

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

示例:您的文档根目录为c:\www\my_site\,并且您要为c:\www\my_site\some\path\my_file.txt创建一个网址,结果将是“http://localhost:8080/some/path/my_file.txt'

答案 1 :(得分:0)

在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);
        }