-1

我有一个字符串数组,其中每个字符串都包含一些 xml 内容。我必须将每个字符串放入一个文件中,最后必须将所有 xml 下载为一个 zip 文件。

我们如何使用 JSF 来实现它。

示例代码:

String content="<?xml version="1.0" encoding="UTF-8"?>
<Head>
<Car>
    <model>i10</command>
    <price></target>

</car></Head>";
 HttpServletResponse response =
               (HttpServletResponse) FacesContext.getCurrentInstance()
                   .getExternalContext().getResponse();
       ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
       ZipEntry ze= new ZipEntry("spy.log");
       zos.putNextEntry(ze);

       zos.write(content.getBytes());
       zos.closeEntry();


       response.setContentType("application/zip");

       response.setHeader("Content-Disposition", "attachment;filename=fyi.zip");
       response.setHeader("Content-Transfer-Encoding", "binary");
       response.getOutputStream().flush();
       response.getOutputStream().close();
       FacesContext.getCurrentInstance().responseComplete();

但我无法将其作为附件下载。请指导我!

4

2 回答 2

1

标题必须先完成。(在 HTTP 中,标题行首先编写,然后是内容。)

content.getBytes("UTF-8").

不要关闭响应输出流。最后调用zos.finish()(不关闭而不是zos.close()- 必须调用两者中的一个来拉开拉链)。关闭响应输出流是容器的责任。

(确保除了上面的代码之外没有任何输出。)

于 2013-08-07T14:21:58.120 回答
-1

您是否尝试过使用 response.addHeader 而不是 response.setHeader?

response.addHeader("Content-Disposition", "attachment;filename=fyi.zip");
response.addHeader("Content-Transfer-Encoding", "binary");
于 2013-08-08T08:12:29.617 回答