1

私の GWT アプリでは、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 で呼び出されるため、空白のブラウザしか表示されません。

「5MB のうち 1MB がダウンロードされました」のような動的メッセージを表示し、すべてのバイトがストリーミングされたら PDF ファイル全体を表示/レンダリングしたいと考えています。

これを行う方法を教えてください。私は GWT の初心者であり、どんな助けも感謝します。

ありがとう。

4

1 に答える 1

0

これは、通常、サーブレットを呼び出して作成する同期要求では実行できませんWindow.open。進行状況を計算して応答を表示するには、ajax 要求を作成する必要があります。

このライブラリを見てください: http://code.google.com/p/gwtupload/。非常に使いやすく、ほとんどのブラウザで問題なく動作します。リクエストを使用ajaxして進行状況を計算します。

于 2012-07-06T04:14:15.160 に答える