Java / Spring / Angular.js将文件路径传递给控制器

时间:2014-08-12 19:06:37

标签: java spring angularjs spring-mvc

我试图根据我通过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或其他方式传递。

2 个答案:

答案 0 :(得分:0)

可能是因为默认情况下,Spring将带扩展名的URL视为文件名。尝试将useSuffixPatternMatch的{​​{1}}属性设置为handlerMapping

如果您使用Java配置:

false

答案 1 :(得分:0)

您可能需要在@PathVariable注释中设置路径变量名称。 在您的情况下:@PathVariable("dirFile")