在我的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的新手,我们将不胜感激。
感谢。
答案 0 :(得分:0)
这不能通过我们通常使用Window.open
调用servlet来进行同步请求来完成。您必须发出ajax请求来计算进度并显示响应。
看看这个图书馆:http://code.google.com/p/gwtupload/。它非常易于使用,并且在大多数浏览器中都能正常使用。它使用ajax
个请求来计算进度。