Chrome下载有效,但资源解释为文档,而不是zip文件

时间:2014-11-21 18:16:54

标签: google-chrome jsf download

我的JSF应用程序应该通过单击按钮来下载zip文件,而这应该会阻止UI。下载工作正常,但Chrome的响应存在问题,因此用户界面永远不会被阻止。

以下是响应代码:

    HttpServletResponse httpResponse = FacesUtil.getServletResponse();
    httpResponse.setContentType("application/zip");
    httpResponse.setContentLength((int) (new File(System.getProperty("java.io.tmpdir") + fileName)).length());
    httpResponse.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
            InputStream is = null;
    OutputStream os = null;

    try {
        os = httpResponse.getOutputStream();
        is = new FileInputStream(System.getProperty("java.io.tmpdir") + fileName);

        byte[] buffer = new byte[2048];
        int anz = 0;
        while ((anz = is.read(buffer)) > 0) {
            os.write(buffer, 0, anz);
        }

        is.close();
        os.flush();
        os.close();
        FacesContext.getCurrentInstance().responseComplete();

    } catch (IOException e) {

这里是xhtml:

                <h:commandButton  id="downloadDokumenteBtn" action="#{dokumenteUebersicht.downloadDokumente}"  value="Ausgewählte Dokumente downloaden" onclick="jQuery.blockUI()">
                </h:commandButton>

Chrome现在出现问题,使用开发人员工具可以看到原因:

**

  

资源被解释为文档但以MIME类型传输   应用程序/压缩。

**

我尝试了很多(CommandLink,各种形式,a4j:CommandLink),没有任何作用......

这个问题有解决方案吗?

0 个答案:

没有答案