`
dengwenwei121
  • 浏览: 40960 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

java多文件压缩下载

 
阅读更多
页面端:
 function jqchk(){  //jquery获取复选框值
	  var s='';
	  $('input[name="zydName"]:checked').each(function(){
	    s+=$(this).val()+',';
	  }); 
	  if(s.length>0)
	   {
		  s=s.substring(0,s.length-1);
		  location.href="$!webPath/usercenter/show/res/downAll.htm?ids="+s+"";
	   }
	  else
	  {
		  alert("请选中需要下载的资源单!");
	  }
 }

服务端:

// 下载选中的
	@SuppressWarnings({ "deprecation", "rawtypes", "null", "unchecked" })
	@RequestMapping({ "/downAll.htm" })
	public void downExcelAll(HttpServletRequest request,
			HttpServletResponse response, String ids) {
		String[] strID = null;
		if (ids != null) {
			strID = ids.split(",");
		}

		String accessoryId = "";
		String tmpFilePath = "";
		List filePaths = new ArrayList();
		if (strID != null) {
			for (int i = 0; i < strID.length; i++) {
				Res res = resImpl.getObjById(strID[i]);
				if (CommUtil.isNotNull(res)) {
					accessoryId = res.getAccessoryId();
					if (CommUtil.isNotNull(accessoryId)) {
						Accessory accessory = accessoryService
								.getObjById(accessoryId);
						String ac_path = accessory.getAcPath();
						String fileName = accessory.getName();
						if (tmpFilePath == null || "".equals(tmpFilePath)) {
							tmpFilePath = request.getRealPath("") + ac_path;
						}
						String filePath = request.getRealPath("") + ac_path
								+ fileName;
						filePaths.add(filePath);
						int downNum = res.getDownNum();
						downNum += 1;
						res.setDownNum(downNum);
						resImpl.update(res);
					}
				}
			}
		}

		this.downAll(request, response, tmpFilePath, filePaths);

	}
	
	@SuppressWarnings({ "rawtypes", "unchecked", "null" })
	public String downAll(HttpServletRequest request,
			HttpServletResponse response,String tmpFilePath,List  filePaths) {    
        //生成的ZIP文件名为Demo.zip    
        String tmpFileName = "zyd.zip";    
        byte[] buffer = new byte[1024];    
        String strZipPath = tmpFilePath + tmpFileName;    
        try {    
            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath));
           List fielpathss=new ArrayList();
            if(filePaths!=null)
            {
            	 for (int i = 0; i < filePaths.size(); i++) {
   				  if(new File(filePaths.get(i).toString()).exists())
   				  {
   					fielpathss.add(filePaths.get(i));
   				  }
   			    }
            }
            // 需要同时下载多个文件   
            File[] file1 =null;
             if(fielpathss.size()>0)
             {
            	 file1=new File[fielpathss.size()]; 
				 for (int i = 0; i < fielpathss.size(); i++) {
					  file1[i]=new File(fielpathss.get(i).toString()); 
				}            	
             }
             if(file1!=null)
             {
            	 for (int i = 0; i < file1.length; i++) {    
                     FileInputStream fis = new FileInputStream(file1[i]);    
                     out.putNextEntry(new ZipEntry(file1[i].getName()));    
                     //设置压缩文件内的字符编码,不然会变成乱码    
                     out.setEncoding("UTF-8");    
                     int len;    
                     // 读入需要下载的文件的内容,打包到zip文件    
                     while ((len = fis.read(buffer)) > 0) {    
                         out.write(buffer, 0, len);    
                     }    
                     out.closeEntry();    
                     fis.close();    
                 }    
                 out.close();   
             }
            this.downFile(response,request,strZipPath,tmpFileName);    
        } catch (Exception e) {    
            logger.error("文件下载出错", e);    
        }    
        return null;    
    }   
    /**   
     * 文件下载   
     * @param response   
     * @param str   
     */    
    @SuppressWarnings("deprecation")
	private void downFile(HttpServletResponse response,HttpServletRequest request,String str,String tmpFileName) {    
        try {    
            String path =str;    
            File file = new File(path);    
            if (file.exists()) {    
                InputStream ins = new FileInputStream(path);    
                BufferedInputStream bins = new BufferedInputStream(ins);// 放到缓冲流里面    
                OutputStream outs = response.getOutputStream();// 获取文件输出IO流    
                BufferedOutputStream bouts = new BufferedOutputStream(outs);    
                response.setContentType("application/x-download");// 设置response内容的类型    
                response.setHeader("Content-disposition","attachment;filename="+URLEncoder.encode(tmpFileName, "UTF-8"));// 设置头部信息    
                int bytesRead = 0;    
                byte[] buffer = new byte[8192];    
                // 开始向网络传输文件流    
                while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) {    
                    bouts.write(buffer, 0, bytesRead);    
                }    
                bouts.flush();// 这里一定要调用flush()方法    
                ins.close();    
                bins.close();    
                outs.close();    
                bouts.close();    
            } else {    
            	 response.sendRedirect(""+request.getRealPath("")+"/usercenter/show/res/downerror.htm");
            }    
        } catch (IOException e) {    
            e.printStackTrace();
        }    
    }
pom依赖:

        <dependency>
            <groupId>ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.7.0</version>
        </dependency>


分享到:
评论

相关推荐

    java多文件压缩成zip文件并实现下载

    在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...

    Java把文件压缩成zip

    ### Java将文件压缩为ZIP的方法 #### 知识点概览 本文主要介绍如何使用Java实现文件的ZIP压缩功能,并提供了完整的代码示例。通过学习本文,你可以掌握以下几个知识点: 1. 使用`java.util.zip`包中的类进行文件...

    Spring Boot中使用Java实现文件批量下载与压缩功能

    ### Spring Boot中使用Java实现文件批量下载与压缩功能 #### 一、背景介绍 在Web应用开发中,经常需要提供给用户批量下载的功能,尤其是在文件管理或者文档分享等场景下。传统的做法是一次只下载一个文件,这不仅...

    java后台批量下载文件并压缩成zip下载的方法

    Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考以下内容。 java后台批量下载文件 在Java后台...

    java实现视频压缩

    总之,Java实现视频压缩涉及到多媒体处理、图像编码、数据封装等多个技术环节,虽然Java不是首选的视频处理语言,但借助适当的库和接口,仍然能够构建功能强大的视频压缩系统。对于想要深入这一领域的开发者来说,...

    java文件分割压缩

    Java文件分割压缩是一种常见的操作,尤其在处理大数据或者网络传输时非常有用,因为单个大文件可能会导致处理效率低或传输困难。以下是一些相关的Java编程知识点: 1. **文件I/O操作**:在Java中,`java.io`包提供...

    Java实现批量下载并压缩文件.pptx.pptx

    Java 实现批量下载并压缩文件是一项常见的任务,尤其在处理大量数据存储时。在这个过程中,主要涉及以下几个关键知识点: 1. **文件下载**:在Java中,文件下载通常基于网络I/O流,通过发送HTTP请求获取远程服务器...

    JAVA文件压缩与解压缩实践(源代码+论文)

    综上所述,这个实践项目涵盖了Java文件压缩与解压缩的核心技术,是学习和理解Java I/O和压缩库的宝贵资源。通过阅读源代码和论文,开发者不仅可以学习如何在Java中进行文件压缩,还能了解到如何将这些技术应用于实际...

    java 下载文件 压缩且删除源文件(支持文件夹与文件)

    zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):zipFileOrDirectory 2、程序自动判断如果是文件那么就是源文件下载,...

    java实现多个文件压缩

    java实现多个文件压缩

    Java调用Zip类批量压缩多个文件.rar

    Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码中可找到此源码。  public class ZipDemo extends JFrame{  JFileChooser fileChooser; //文件选择器  JList fileList; //待...

    java压缩文件以及文件夹

    在Java编程中,压缩和解压缩文件是常见的任务,特别是在处理大量数据或传输文件时。本文将深入探讨如何使用Java来处理压缩文件,特别是针对标题提及的“java压缩文件以及文件夹”。我们将主要关注`ZipCompressor....

    java代码实现单个或多个文件压缩成rar包

    java代码实现单个或多个文件压缩成rar包,本地要安装winRar插件。

    java导出csv文件并压缩(含下载提示功能)

    通过以上步骤,你已经实现了在Java中导出CSV文件,然后将其压缩成ZIP格式,并提供了一个Web接口供用户下载。确保正确配置你的服务器和文件路径,以适应实际项目的需求。同时,不要忘记处理可能出现的异常,以确保...

    java开发中压缩js,css文件

    这种技术通常被称为“文件合并与压缩”,它将多个js和css文件合并为一个文件,并去除其中不必要的空白、注释以及进行其他优化,以减小文件大小。下面将详细介绍这一过程及其相关知识点。 首先,我们要了解为什么要...

    java ftp上传 下载 文件压缩解压

    这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...

    java压缩文件

    java批量压缩文件跟文件夹,目前还不支持中文名,后期会改进,谢谢

Global site tag (gtag.js) - Google Analytics