【发布时间】:2017-02-21 07:47:45
【问题描述】:
我有本地 Tomcat 服务器和 Spring 应用程序。
如何为位于文件系统上的文件(例如:C:\Files\file.smth)创建可下载的 URL(例如:http://localhost:8080/file.smth)?
谢谢!
【问题讨论】:
标签: java spring tomcat web server
我有本地 Tomcat 服务器和 Spring 应用程序。
如何为位于文件系统上的文件(例如:C:\Files\file.smth)创建可下载的 URL(例如:http://localhost:8080/file.smth)?
谢谢!
【问题讨论】:
标签: java spring tomcat web server
只能使用 URL 访问配置的文档根目录或 Web 服务器下的文件。 (其他一切都将是一个巨大的安全漏洞)
对于文档根目录下的文件,删除上面的部分路径,包括文档根目录,并在前面加上协议和主机。用斜杠替换所有反斜杠字符。
示例:您的文档根是c:\www\my_site\,并且您想为c:\www\my_site\some\path\my_file.txt 创建一个URL,结果将是`http://localhost:8080/some/path/my_file.txt'
【讨论】:
在 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);
}
【讨论】: