本文主要针对的是Springmvc框架进行讲解,有些人做这个下载页面的时候,点击下载,却只能在当前网页上打开下载的东西,却不能在本地进行下载,而且还不能选择下载的路径,现在来简单讲述一下如何去设置下载路径和点击下载的时候可以弹出对话框:
首先在Controller文件里面的代码如下所示:
@RequestMapping("/download")
public void download(String filename, HttpSession session, HttpServletResponse resp){
System.out.println(filename);
String path=session.getServletContext().getRealPath("/WEB-INF/upload/");
File file=new File(path,filename);
try {
resp.setHeader("content-disposition","attachment");
StreamUtils.copy(new FileInputStream(file),resp.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
需要注意的地方就是,和那些点击了下载按钮后,下载的文件显示在当前网页中的朋友们,注意这一行:public void download(String filename, HttpSession session, HttpServletResponse resp)
,如果HttpServletResponse resp这个位置有人写成了输出流的请改成这个 HttpServletResponse resp
然后在下面StreamUtils.copy(new FileInputStream(file),resp.getOutputStream());
中的resp.getOutputStream()
记得写好,然后在上面写上请求头,内容第一个为请求的处理方式,第二个为弹出对话框的设定,最终结果如下:
点击后
弹出对话框并且可以填写下载路径
总结一下,就是需要一个HttpServletResponse resp这个参数,并且在下载文件中作为输出流,而且可以作为请求头设立请求处理方法和弹出对话框方法