java下载文件功能(下载路径可选)  及其文件拷贝方法 (转载)

@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(requestfileName);
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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值