【发布时间】:2014-08-12 19:06:37
【问题描述】:
我正在尝试根据我通过 dirFile 参数传入的路径从服务器返回一个文件。但是,我无法将 dirFile 参数传递给控制器。
这是我在服务器上的控制器:
@RequestMapping(value="/test/getFile/{dirFile}", method = RequestMethod.GET)
public void doDownload(HttpServletRequest request, HttpServletResponse response,
@PathVariable String dirFile) throws IOException { ...returns file }
以下是我目前拨打电话的方式:
<a ng-href="/Web/test/getFile/{{encodeFileURL(filetree.currentNode.id)}}">Click here to download file</a>
该参数很好地填充并生成以下 URL:
http://localhost:8080/Web/test/getFile/C%3A%5Capache-tomcat-7.0.54%5Clogs%5Cfile.log
如果没有参数,控制器会完成它的工作并返回我硬编码的文件,但我想返回传入的文件。我似乎无法让控制器接受文件路径的参数,它总是返回类似 400 Bad Request Error 的东西。我尝试了一堆不同的弹簧处理程序变体,但找不到有用的东西。我做错了什么?
更新: 这与编码有关。我认为它是用 UTF-8 编码的,而 tomcat 正在使用其他东西。我将尝试以 JSON 或其他方式传递。
【问题讨论】:
-
发布异常堆栈跟踪。另外,我希望您知道这是一个巨大的安全漏洞:任何人都可以访问运行您的服务器进程的用户可以读取的服务器(甚至网络上的其他机器)的任何文件。
-
是的,我知道。它将仅限于管理员和可用文件的子集。但有了这个,我只收到 400 Bad Request。
标签: java spring angularjs spring-mvc