创建zip文件到本地计算机

时间:2014-04-28 08:51:06

标签: java jsp

我有一个下面的代码,其中我的zip文件是在服务器上创建的,我希望在本地机器上创建zip文件,下面是我的代码,请检查下面的代码并让我知道是否有人有解决方案。

<%!


public static void addToZipFile(String fileName, ZipOutputStream zos) throws FileNotFoundException, IOException {

    System.out.println("Writing '" + fileName + "' to zip file");

    File file = new File(fileName);
    FileInputStream fis = new FileInputStream(file);
    ZipEntry zipEntry = new ZipEntry(file.getName());
    zos.putNextEntry(zipEntry);

    byte[] bytes = new byte[1024];
    int length;
    while ((length = fis.read(bytes)) >= 0) {
        zos.write(bytes, 0, length);
    }

    zos.closeEntry();
    fis.close();
}


%>


 <%
 String imgID = request.getParameter("iID").toString();
    String epsFile = request.getParameter("epsNm").toString();
    String ZipFile = imgID + ".zip";
    //FileOutputStream fos = new FileOutputStream("d:/" + ZipFile);
    FileOutputStream fos = new FileOutputStream(ZipFile);
    ZipOutputStream zos = new ZipOutputStream(fos);


 File temp = new File(imgID);
 String absolutePath = temp.getAbsolutePath();
 System.out.println("filepath" + absolutePath);

 String relativeWebPath = "CoverCapPDF/"+ imgID;
 String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
 System.out.println("absoluteDiskPath" + absoluteDiskPath);

 String relativeWebPathEPS = "eps/"+ epsFile;
 String absoluteDiskPathEPS = getServletContext().getRealPath(relativeWebPathEPS);
 System.out.println("absoluteDiskPath" + absoluteDiskPathEPS);



    String file1Name = absoluteDiskPath;
    String file2Name = absoluteDiskPathEPS;
    String file3Name = "file2.txt";


    addToZipFile(file1Name, zos);
    addToZipFile(file2Name, zos);

    zos.close();
    fos.close();


%>

请帮帮我:)。

2 个答案:

答案 0 :(得分:0)

我假设您正在处理使用JSP的Web应用程序(因为上面的语法建议相同)。答案就是你不能。

你能做的是

  1. 在服务器上创建文件,并要求客户下载refer here
  2. 创建一个applet,applet可以包含邮政编码(但出于安全原因不建议使用)

答案 1 :(得分:0)

首先,您不应该为此使用JSP,而应使用servlet。 JSP是视图组件,其作用是使用JSP EL,JSTL和其他自定义标记生成HTML标记,但不使用scriptlet。

第二:你正在写一个FileOutputStream。这显然会将您的zip条目写入文件。您希望将zip条目写入HTTP响应。因此,您应该使用响应输出流来编写zip条目。

要告诉浏览器您要发送的内容应保存为zip文件,请使用

response.setHeader("Content-disposition", "attachment; filename=" + fileName);

(应该在向响应输出流发送任何内容之前调用它)