- PR -

ファイルをダウンロードした後、画面が反応しない

1
投稿者投稿内容
ギャワ
会議室デビュー日: 2007/03/22
投稿数: 3
投稿日時: 2007-03-22 16:28
Java初心者です。

Strutsで、FormFileクラスを利用して、
ファイルのダウンロードをしようとしています。

画面にダウンロードするファイル名のリンクがあり、
そのリンクをクリックするとダウンロードを行います。
実際、ダウンロードのダイアログが表示され、
ファイルの保存等できるのですが、
ファイル保存、キャンセル後に、
再度、同じファイルをダウンロードしようとして、
リンクをクリックしても反応がありません。
また、その画面にはsubmitボタン(戻るボタン)などありますが、
ボタンを押しても反応がありません。
ブラウザの戻るボタンで戻り、
再度、ファイルをダウンロードする画面を開き、
ファイル名のリンクをクリックするとダウンロードされます。
しかし、一度ダウンロードを実行すると、
元の画面のリンク、ボタンが反応しなくなります。

いろいろインターネットで調べているのですが、
どこにも解決方法が載っていません。
私の検索方法が悪いのかもしれませんが、
どなたか、ご存知であれば、
お忙しいところ申し訳ありませんが、
ご教授のほど、よろしくお願いします。

以上
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-03-22 16:36
リンクをクリックした際、サーバにリクエストは飛んでいますか?
-> html の問題か、Webアプリケーションの問題か切り分けることができます


ところで FormFile ってアップロードするときに使うものではありませんでしたっけ?
ダウンロード処理自体は Struts とどう関係があるのでしょうか?
Action を介して何かのファイルに forward しているのでしょうか?
ギャワ
会議室デビュー日: 2007/03/22
投稿数: 3
投稿日時: 2007-03-22 17:37
インギさん。
早速の返信ありがとうございます。

> リンクをクリックした際、サーバにリクエストは飛んでいますか?
IEのステータスバーに出てくるゲージが全く出てこないので、
サーバにはリクエストが飛んでないと思います。

> ところで FormFile ってアップロードするときに使うものではありませんでしたっけ?
> ダウンロード処理自体は Struts とどう関係があるのでしょうか?
> Action を介して何かのファイルに forward しているのでしょうか?
そうですね。FormFileはアップロードするときに使うものですね。
混乱させて申し訳ありません。
アップロードするときの画面遷移で、
登録画面→確認画面→完了画面という遷移をしていまして、
このときの確認画面で、アップロードするファイルを
確認するという意味で、ダウンロードできるようにしています。
そのため、FormFileからアップロード情報を取ってきています。
ちなみに、アップロードのファイルは、DB(MYSQL)に登録しています。
また、登録した内容は、詳細画面等からも参照できるようになっていまして、
詳細画面からダウンロードが可能になっています。
ダウンロード時にDBからバイナリデータを取得して、
ダウンロードを行っています。
この時はFormFileは使っていません。
この2つの処理を同じメソッド内でIF文を使って使い分けています。
混乱させてしまい申し訳ありませんでした。
最終的にはアクションフォワードはnullを返しています。

このような処理において、
ダウロードして、ファイルを保存なりキャンセルした後、
元の画面では、全くリンクやボタンを押しても反応がありません。
サーバにもリクエストを飛ばしていないようです。

よろしくお願いします。

以上
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-03-22 18:00
リクエストが飛んでいるかどうかはアクセスログで確認しましょう。

で、リクエストが飛んでいないということは Struts とは関係なく html の問題ですよね?
Struts とか Java とは切り離して考えてはいかがでしょう。

リンクがあって、クリックしても反応しないのであればブラウザの問題かもしれませんし、JavaScriptの問題かもしれませんね。
素のhtmlでも現象は再現するでしょうか?
ギャワ
会議室デビュー日: 2007/03/22
投稿数: 3
投稿日時: 2007-03-22 18:34
インギさん
ありがとうございます。
問題が解決しました。
JavaScriptが問題でした。
2度押し防止のためにJavaScriptで小細工してまして
それが原因でした。
本当にありがとうございます。

ちなみに、
> リクエストが飛んでいるかどうかはアクセスログで確認しましょう。
ご教授ありがとうございます。
Tomcatのアクセスログを取得する方法を調べまして、
アクセスログを見てみましたが、やはりリクエストされていませんでした。
これで、また一つ勉強になりました。
ありがとうございます。

以上
1

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