- PR -

ファイルのダウンロード判定

1
投稿者投稿内容
半玉
会議室デビュー日: 2003/12/02
投稿数: 5
投稿日時: 2003-12-08 14:46
お世話になります。

JPSからファイルのダウンロードを行う処理を作成しております。以下のコードでファイルをダウンロードさせ、その後、ダウンロード後の処理を行っています。この処理は、正常にファイルをダウンロードした場合のみ行いたいので例外をキャッチしているのですが、ファイルを保存するダイアログが現れた時点でキャンセルボタンを押しただけでは例外とならず、ダウンロード後の処理が行われてしまいます。例外が発生したかどうかだけでなく、ファイルがダウンロードされたのかを判定する方法があれば教えてください。

try{
response.setContentType("text/x-csv (text/x-comma-separated-values)");
response.setHeader("Content-Disposition", "attachment;filename=\\"" + filename + "\\"");
dos = new DataOutputStream( response.getOutputStream() ) ;
dos.write( ・・・)
-ダウンロード後の処理-
}catch (Exception e){
 例外処理
}
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-12-08 16:36
・新規ファイルのダウンロードの場合
 そのファイルが指定のディレクトリに存在するかどうか
・既存ファイルのダウンロードの場合
 そのファイルのタイムスタンプが変更されているかどうか

でチェックするのはいかがでしょうか?


ファイルの存在チェックには java.io.File#exists()
ファイルのタイムスタンプを得るには java.io.File#lastModified()

を使用すればいいと思います。


#でも、既存ファイルのダウンロード中に誰かが古いファイルを更新していたりしたら
#正しく動きませんね^^;

[ メッセージ編集済み 編集者: たーぞう 編集日時 2003-12-08 16:39 ]
半玉
会議室デビュー日: 2003/12/02
投稿数: 5
投稿日時: 2003-12-08 17:41
返答ありがとうございます。
ダウンロードしたクライアントでファイルの存在チェック、タイムスタンプチェックですと、クライアントがどこにファイルを保存したのかを取得しなくてはならないと思うのですが、保存左記を指定するダイアログでクライアントが入力した保存先を取得する方法はあるんでしょうか。
固定の場所に保存するのであればその方法も可能かと考えたのですが、今回はファイル名も保存先もクライアントが決定します。
リターンコードや例外のように、確実に情報を得られる方法があればよいのですが・・・
masaka
常連さん
会議室デビュー日: 2003/08/04
投稿数: 27
お住まい・勤務地: 東京
投稿日時: 2003-12-08 17:47
引用:

たーぞうさんの書き込み (2003-12-08 16:36) より:
・新規ファイルのダウンロードの場合
 そのファイルが指定のディレクトリに存在するかどうか
・既存ファイルのダウンロードの場合
 そのファイルのタイムスタンプが変更されているかどうか

でチェックするのはいかがでしょうか?

[ メッセージ編集済み 編集者: たーぞう 編集日時 2003-12-08 16:39 ]



ファイルが保存されるのは:クライアントマシン
ファイルのダウンロード処理を行うのは:サーバマシン

従って、ファイルが保存されたかどうか、サーバからクライアントのファイルをチェックしなければいけませんが…java.io.File#exists()では出来ませんね?

本題のキャンセルボタンを押したときの処理ですが、これはhttp通信では出来ないと思います。一度httpプロトコルについて調べてみることをお勧めします。

[ メッセージ編集済み 編集者: masaka 編集日時 2003-12-08 17:48 ]
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-12-08 18:02
わ〜ごめんなさい。
今やっている開発の中に、ファイルをアップロードするサーブレットがありまして、それが念頭にあったものだからアップロードとダウンロードをすっかり間違えてしまいました。

僕ってバカ(T-T)。
半玉
会議室デビュー日: 2003/12/02
投稿数: 5
投稿日時: 2003-12-08 20:01
そうですか。そういわれてみると、サーバからクライアントの制御を行おうとしているわけですから、この方法では無理ですね。
仕様を変えてみる方向で検討します。
1

スキルアップ/キャリアアップ(JOB@IT)