该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@RequestMapping("download")
public void download(ModelMap modelMap,HttpServletRequest req,HttpServletResponse resp) throws IOException, ServletException{
System.out.println("进入下载");
resp.setContentType("text/html;charset=utf-8");
//得到要下载的文件名
String fileName = req.getParameter("filename");
System.out.println(fileName);
fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8");
//上传的文件都是保存在/WEB-INF目录下
String path=req.getServletContext().getRealPath("/WEB-INF/original");
//处理文件名
String realname = fileName.substring(fileName.indexOf("/")+1);
//通过文件名找出文件的所在目录
//得到要下载的文件
File file = new File(path+File.separator+fileName);
System.out.println(file);
//如果文件不存在
if(!file.exists()){
req.setAttribute("error", "您要下载的资源已被删除!!");
req.getRequestDispatcher("/WEB-INF/page/error.jsp").forward(req, resp);
}
//设置响应头,控制浏览器下载该文件
resp.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
//读取要下载的文件,保存到文件输入流
FileInputStream in = new FileInputStream(path + File.separator + fileName);
//创建输出流
OutputStream os = resp.getOutputStream();
//设置缓存区
byte[] bytes = new byte[1024];
while((in.read(bytes))>0){
os.write(bytes);
}
//关闭输入流
in.close();
//关闭输出流
os.close();
}