1

在我的 GWT 应用程序中,我编写了一个 servlet 来下载/流式传输 PDF 文件。

以下是代码。

    protected void updateResponse(HttpServletResponse response, InputStream dataStream, long contentLength, KnownContentTypes contentType, String filename, int cacheSeconds) {

    response.setHeader("Content-Type", contentType.getTypeString());
    response.setHeader("Content-Length", String.valueOf(contentLength));
    response.setHeader("Content-disposition", "inline;filename=" + filename);
    response.setHeader("Cache-Control", "max-age=" + cacheSeconds);


    byte[] buffer = new byte[BUFFER_SIZE];
    try {
         ServletOutputStream out = response.getOutputStream();
         while ((dataStream.read(buffer)) != -1) {
            out.write(buffer); 
         }

    } catch (IOException e) {
        sendError(response);

    } 
}

pdf 在浏览器上成功呈现。问题是一些 pdf 的大小非常大,因为这是在 window.open 上调用的,所以我看到的只是一个空白浏览器。

我想显示一条动态消息,例如“已下载 1MB 的 5MB”,并在流式传输所有字节后显示/渲染整个 PDF 文件。

请让我知道如何做到这一点。我是 GWT 的新手,任何帮助都将不胜感激。

谢谢。

4

1 回答 1

0

这不能通过我们通常通过调用 servlet 发出的同步请求来完成,Window.open您必须发出 ajax 请求来计算进度并显示响应。

看看这个库:http ://code.google.com/p/gwtupload/ 。它非常易于使用并且在大多数浏览器中都能正常工作。它使用ajax请求来计算进度。

于 2012-07-06T04:14:15.160 回答