プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
初めて質問させていただきます。

サーブレットでPDFファイルのダウンロードを行う処理を実装しています。

クライアントがダウンロードのダイアログでキャンセルボタンを押したときのイベントを
サーブレット側で検知し、キャンセルされた場合にはDBへのインサートをしたいのですが、
いろいろ試してみても以下のような場合に入出力例外のcatchができません。

(1)PDFファイルのサイズが300KB以下で、
 「ファイルのダウンロード」ダイアログの「保存」ボタンを押した後の「名前を付けて保存」ダイアログ
 で「キャンセル」ボタンを押した場合。

(2)PDFファイルのサイズが100KB以下で、
 「ファイルのダウンロード」ダイアログの「キャンセル」ボタンを押した場合。

という事なのですが、ダイアログのイベントを取るための解決策や手がかりなどがありましたら
ご教授いただけませんでしょうか?
どうぞよろしくお願いします。

ソースは追って送信させていただきますm(_ _)m

A 回答 (1件)

ダウンロードのダイアログが表示されるときはすでに


サーブレットの処理は終わってしまっていますし、
キャンセルを押したことをサーブレット側で知るのは
不可能なはずです。

この回答への補足

ご回答ありがとうございます。

私の説明不足だったのですが、
実は、
byte[] byteBuf = new byte[1];
bis.read(byteBuf, 0, byteBuf.length);
bos.write(byteBuf, 0, binData);
のように、
入力ストリームからファイルを読み込むときと
出力ストリームに書き込むときのバイト数を
1バイトずつにすると
300KB以上のPDFファイルの場合は
「キャンセル」ボタンを押したときに
IOExceptionでステータスをcatchできるのです。

そこで、ファイルのサイズが小さいときにも
IOExceptionがcatchできるようにしたいのです。

よろしくお願いいたします。

補足日時:2005/11/01 09:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!