问题的引出,做微信开发,使用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方法设置一下,就不用自己转码了。