SpringMVC的Controller如何重定向非Controller映射地址(外部地址)

引言
  问题的引出,做微信开发,使用SpringMVC内置的文件下载方法,怎么也无法下载文件,总是提示“文件无法下载”。没有办法,只好在服务端生成文件,然后直接重定向到该文件。虽然不好、不安全,但解决了微信中无法下载文件的问题。

方法
  代码很简单,就是一个简单的要了解的知识点。RedirectView类。
@RequestMapping("/download")
public ModelAndView download(){
	String shortName = "下载文件.xls";
	try {
		shortName = URLEncoder.encode(shortName,"UTF-8");
	} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
	}
	String url = "../downloadPath/"+shortName;
	ModelAndView downloadView = new ModelAndView(new RedirectView(url));
	return downloadView;
}


  如果重定向的文件名中有中文,需要使用URLEncoder.encode()函数进行编码,不然会提示无法找到文件。
  RedirectView有个参数:encodingScheme,似乎可以达到同样的效果(我没有试验,大致看了一下源码,觉得似乎可以)。可以使用set方法设置一下,就不用自己转码了。

猜你喜欢

转载自wallimn.iteye.com/blog/2367767
今日推荐