Java/Spring/Angular。js将文件路径传递给控制器
我试图根据通过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>
该参数填充fine并生成以下URL:
http://localhost:8080/Web/test/getFile/C%3A%5Capache-tomcat-7.0.54%5Clogs%5Cfile.log
在没有参数的情况下,控制器执行其工作并返回一个我硬编码的文件,但我想返回传入的文件。我似乎无法让控制器接受文件路径的参数,但它总是返回类似400错误请求的错误。我尝试了一系列不同的spring处理程序,但找不到有效的方法。我做错了什么
更新: 这和编码有关。我认为它是用UTF-8编码的,而tomcat使用的是其他东西。我将尝试以JSON或其他形式传递
# 1 楼答案
这可能是因为默认情况下Spring将扩展名为URL的URL视为文件名。尝试将
handlerMapping
的属性useSuffixPatternMatch
设置为false
如果使用Java配置:
# 2 楼答案
您可能需要在@PathVariable注释中设置路径变量名。 在您的情况下:
@PathVariable("dirFile")