spring mvc java 把多文件打包成zip,并下载

再来一篇

/**
	 *  压缩并导出文件
	 * @param zipPath 压缩文件临时路径  路径最后不要有 /
	 * @param zipName 压缩为文件名 **.zip
	 * @param createFilesPath 需要压缩的文件列表
	 * @param request
	 * @param response
	 * @return
	 * @throws IOException
	 */
	public boolean downloadZip(String zipPath,String zipName,List<String>createFilesPath,HttpServletRequest request,HttpServletResponse response) {

		    //String tmpFileName = "report.zip";
	        byte[] buffer = new byte[1024];
	       // String strZipPath = COM_REPORT_PATH+"/"+user.getOid()+"/"+report.getOid()+"/"+tmpFileName;  

	          String strZipPath=zipPath+"/"+zipName;
	        try {
	        	File tmpZip=new File(zipPath);
	        	if (!tmpZip.exists())
	        		tmpZip.mkdirs();
	        	 File tmpZipFile = new File(strZipPath);
	 			if (!tmpZipFile.exists())
	 				tmpZipFile.createNewFile();

	            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath));
	            // 需要同时下载的两个文件result.txt ,source.txt  

	            File[] file1 =new File[createFilesPath.size()] ;

	            for(int i=0;i<createFilesPath.size();i++){
	            	file1[i]=new File(createFilesPath.get(i));
	            }
	            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.downloadFile(zipPath,zipName,response);
	        } catch (Exception e) {
	         e.printStackTrace();
	        }
	        return true;
	}

	/**
	 * 以压缩文件导出
	 * @param fileName
	 * @param filePath
	 * @param response
	 */
   public void downloadFile(String filePath,String fileName,HttpServletResponse response){
       response.setCharacterEncoding("utf-8");
      // response.setContentType("application/octet-stream");  

       try {
		   File file=new File(filePath,fileName);
           // 以流的形式下载文件。
           BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file.getPath()));
           byte[] buffer = new byte[fis.available()];
           fis.read(buffer);
           fis.close();
           // 清空response
           response.reset();
           OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
           response.setContentType("application/octet-stream");
           response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
           toClient.write(buffer);
           toClient.flush();
           toClient.close();

        }
        catch (IOException ex) {
           ex.printStackTrace();
       }
   }
	
时间: 2024-08-02 21:44:21

spring mvc java 把多文件打包成zip,并下载的相关文章

java多个文件压缩成zip包,并删掉源文件

问题描述 java多个文件压缩成zip包,并删掉源文件 一个文件夹下有txt文件,csv文件,zip文件,怎么将该文件夹下的所有csv文件压缩成zip包,并删掉原始的csv文件,大神能不能给个例子看一下,谢谢了. 解决方案 java压缩成zip 解决方案二: 这么专业的问题,路过,同求 解决方案三: public static void fileToZip(String sourceFilePath){ File sourceFile = new File(sourceFilePath); Fi

ThinkPHP实现将本地文件打包成zip下载_php实例

首先,将FileToZip.class文件放到ThinkPHP/Extend/Library/ORG/Util/文件夹中,FileToZip.class.php为zip下载类,其详细代码如下: <?php /** * zip下载类文件 * 遍历目录,打包成zip格式 */ class traverseDir{ public $currentdir;//当前目录 public $filename;//文件名 public $fileinfo;//用于保存当前目录下的所有文件名和目录名以及文件大小

sae-如何将java代码文件打包成.war格式的包

问题描述 如何将java代码文件打包成.war格式的包 我在sina?app?engine上创建了一个应用,现在要把代码上传上去,上传格式只能是war的格式上传,如何将文件压缩为war格式呢?另外怎么将数据库一起弄到上面? 解决方案 打开项目工程 用eclipse导出 war就可以啦 解决方案二: 如何将Web应用打包成.war文件?如何将Web应用打包成.war文件?---------------------- 解决方案三: 1.使用winrar压缩软件,直接将应用文件目录(包含该目录下的所有

jar-为什么要将java程序JAR包打包成.EXE,作用是什么

问题描述 为什么要将java程序JAR包打包成.EXE,作用是什么 如题.jar包不是已经能运行了吗,为何还要打包成.EXE呢,求真解,意义何在? 解决方案 JAR包不能单独运行的,它只是将一些函数封装下,提供给其它工程使用,要依托java.EXE是可以单独运行的,不用依托java 解决方案二: Java程序打包成Jar包Java程序打包成jar包Java程序打包成jar包 解决方案三: http://blog.chinaunix.net/uid-26153556-id-3042913.html

php将文件夹打包成zip文件的简单实现方法_php技巧

示例如下: function addFileToZip($path,$zip){ $handler=opendir($path); //打开当前文件夹由$path指定. while(($filename=readdir($handler))!==false){ if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和'..',不要对他们进行操作 if(is_dir($path."/&q

Python脚本文件打包成可执行文件的方法

  这篇文章主要介绍了Python脚本文件打包成可执行文件的方法,本主要讲解了Python2.X版本的打包方法,对Python3.X的打包也有简单介绍,需要的朋友可以参考下 将Python脚本文件包装成可执行文件,其目的有二: 一则: 不需要依赖Python编译器就可以运行软件 二则: 不想让自己的源码公布出去 常用的工具有: py2exe.cx_freeze等 [工具:py2exe] 安装py2exe 安装该工具很简单: 只需要从官方网站:http://www.py2exe.org/下载与版本

ios-Xcode中如何将部分文件打包成静态库

问题描述 Xcode中如何将部分文件打包成静态库 我想要打包的文件中使用了第三方,例如AFNetworking,但是我并不想将第三方文件也打包到静态库中,请问该怎么设置? 解决方案 XCode打包静态库文件 解决方案二: 把你需要打包的文件新建一个工程放进去打包试试,希望能帮到你 解决方案三: 先将第三方编译静态库,再在你要打包的工程引用看看? 解决方案四: 很多sdk都有依赖库的,你可以参考下,就是单独拿出来

qt-多个.m文件打包成动态链接库给Qt调用的问题

问题描述 多个.m文件打包成动态链接库给Qt调用的问题 当用那个mcc -W lib:test1 -T link:lib test.m 时,如果我有一个主函数及多个子m函数,格式应该怎么写呢??? 是为每一个函数都创建一个dll呢,还是程序自己会分辨出哪个是主函数而只生成一个dll文件呢?? 恳请高手给个答案吧?? 解决方案 已经知道怎么解决了.

ios-iOS 怎么把文件图片等打包成zip?

问题描述 iOS 怎么把文件图片等打包成zip? 如题,iOS 怎么把文件和图片等打包成zip?要用到什么第三方框架吗?打包好的zip文件怎么上传呢?求好心人指点 解决方案 可以用ZipArchive解压缩zip文件,至于上传zip文件和上传其它的文件没有差异 解决方案二: 可以用ZipArchive解压缩zip文件,至于上传zip文件和上传其它的文件没有差异