我有一个下面的代码,其中我的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();
%>
请帮帮我:)。
答案 0 :(得分:0)
我假设您正在处理使用JSP的Web应用程序(因为上面的语法建议相同)。答案就是你不能。
你能做的是
答案 1 :(得分:0)
首先,您不应该为此使用JSP,而应使用servlet。 JSP是视图组件,其作用是使用JSP EL,JSTL和其他自定义标记生成HTML标记,但不使用scriptlet。
第二:你正在写一个FileOutputStream。这显然会将您的zip条目写入文件。您希望将zip条目写入HTTP响应。因此,您应该使用响应输出流来编写zip条目。
要告诉浏览器您要发送的内容应保存为zip文件,请使用
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
(应该在向响应输出流发送任何内容之前调用它)