下载后的消息

时间:2012-11-26 13:00:20

标签: java javascript servlets

我有一个制作并返回zip文件的Servlet 像这样的东西

 response.setHeader("Pragma","Public");
            response.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");

            response.setContentType("application/octet-stream");

            response.setHeader("Expires", "0");
            response.setHeader("Content-Transfer-Encoding", "binary");
            if(file.getName().contains("–")){
                response.setHeader("Content-Disposition", "inline; filename=\"file.zip\"");
            }

            OutputStream os = response.getOutputStream();
            ZipOutputStream zos = new ZipOutputStream(os);
            for (File f : files) {
                //add files, it's working...
                }
                bis.close();
                fis.close();
                zos.closeEntry();
            }
            zos.flush();
            zos.close();
            os.flush();
            os.close();

目前要下载我正在使用iframe,所以我设置src属性开始下载。 调用此函数时加载下载帧

function loadIDownloadFrame(url) {
    document.getElementById("idownloadFrame").src=url;
}

但是现在,我需要在返回zip文件后显示一条消息而不离开当前页面。我需要知道servlet是否返回了zip文件。

我尝试使用“window.frames ['idownloadFrame']。document.readyState”获取iframe状态,但始终状态为“完成”。

有人有任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

我认为您可以直接引用映射Servlet的下载链接(返回可下载的二进制文件)。如果您在映射的servlet中设置适当的标头以返回二进制文件,它将不会更改页面,从代码片段看起来您已经这样做了。为什么必须在不同的iframe中下载文件?你不一定需要它。

你必须在哪里显示消息?像JavaScript提醒或其他什么?