【问题标题】:GWT Progress Bar while buffering PDF content before displaying on browser在浏览器上显示之前缓冲 PDF 内容时的 GWT 进度条
【发布时间】:2012-07-05 17:32:17
【问题描述】:

在我的 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 的新手,我们将不胜感激。

谢谢。

【问题讨论】:

    标签: gwt servlets download progress-bar


    【解决方案1】:

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

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

    【讨论】:

    • 您能否提供一个简单的示例。我看了一下这个库,好像是用来上传而不是下载的。
    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 2015-09-15
    • 2020-11-10
    • 1970-01-01
    • 2022-08-17
    • 2014-05-03
    • 2014-10-04
    • 2019-08-26
    相关资源
    最近更新 更多