@RequestMapping(value="downLoadZip/{fileName}" ,method = RequestMethod.GET)
private String getZipFile(RedirectAttributes redirectAttributes,@PathVariable("fileName")String fileName,HttpServletResponse response,HttpServletRequest request){
// request.getRealPath("res/tempPaperDB/
System.out.print("fileName:"+fileName);
String message="下载成功!";
response.setHeader("Cache-Control", "private");
//获取全路径
String fileNameAll=request.getRealPath("res/tempPaperDB/");
System.out.print("fileNameAll"+ fileNameAll);
response.reset();//设置为没有缓存
response.setContentType("application/x-download;charset=GBK");
response.setHeader("Content-Type", "application/force-download");
String title1 = DownloadUtil.processFileName(request, fileName);
response.setHeader("Content-disposition", "attachment;filename="+ title1+".zip");
try {
//输入流
InputStream fis = new BufferedInputStream(newFileInputStream(fileNameAll+"/"+fileName+".zip"));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
toClient.write(buffer);
toClient.flush();
toClient.close();
}catch (Exception e){
e.printStackTrace();
message="下载失败!";
}
redirectAttributes.addAttribute("message",message);
return "roo/paperdbcreatevf";
}
此方法会存在问题,后台会报错,原因由于response.getOutputStream()和response.getWriter()重复使用,不允许这样使用,顾需要加两行代码可解决此问题:
out.clear();
out = pageContext.pushBody();
又因out对象只能在jsp中使用,顾将此代码拿到jsp中实现,并且需在最前面加上
out.clear();
out = pageContext.pushBody();
------------------------------------------------------------------------------------------
2,文件拷贝
将文件拷贝到某个路径下面:
commons.io.FileUtils.copyFile(“a/a.jpg”,“b/a.jpg”);//注意一定是具体某个文件
拷贝文件下文件到另外一个文件夹下:
commons.io.FileUtils.copyFileToDirectory();