您的位置:首页 > 编程语言 > Java开发

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

2017-12-08 09:38 435 查看
@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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FileUtils 下载文件