- PR -

【ASP.NET】ファイルダウンロード時のレスポンス

1
投稿者投稿内容
adtk
ベテラン
会議室デビュー日: 2004/02/06
投稿数: 75
投稿日時: 2006-12-25 12:14
こんにちは。

ASP.NETで作成したWEBアプリ上でファイル(pdf,csv)のダウンロードが必要になりました。状況に応じて、ブラウザで直接ファイルを開いたり、ダウンロードダイアログで「開く」「保存」の選択をできるようにと考えています。

処理としては以下のようになっています

@ 検索画面でデータを検索(検索結果の各行に「印刷」ボタンを配置)
A @の検索結果「印刷」ボタン押下により、該当行のキーをパラメータにして
  ファイル出力用のページを開く
B ファイル出力用のページではパラメータのキーを元に、pdfファイルを生成
C−1 ある条件では生成したpdfファイルをそのままリダイレクト
    (ファイル出力用ページがにそのままpdfファイルが表示される)
C−2 ある条件では生成したpdfファイルをダウンロードさせる
    (ダウンロードダイアログ表示)

ここでC−2の場合にダウンロードダイアログを表示し、「保存」「開く」を
行うことができるのですが、ファイル出力用ページが空のまま残ってしまいます。
なんとかして、このページを閉じる、もしくは「ダウンロード完了」のメッセージ
表示くらいをさせたいのですが、方法が検討もつきません。

どなたか分かりませんでしょうか?
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-12-25 12:44
検索画面のページにサイズ0のIFRAMEを作って
ダウンロードのトリガーとなるボタンなどが押されたら、

iframe.src = "xxxx.pdf"

のようなスクリプトを実行する。
すると、ファイル出力用のページを開く必要もなくダウンロードダイアログを表示することができます。

[ メッセージ編集済み 編集者: burton999 編集日時 2006-12-25 12:45 ]
adtk
ベテラン
会議室デビュー日: 2004/02/06
投稿数: 75
投稿日時: 2006-12-25 13:19
ありがとうございます。
そんな方法があるのですね!!

ですが、少し説明不足でした。
今回検索画面はいくつかあり(10種類ほど)、
そこから出力するPDFは同じものになっているため、
全ての検索画面にサイズ0のフレームを作って
小細工するのも、どうかなと思っているのと、
今回の要件では条件によって新規ウィンドウのブラウザに
開いてしまいたい場合(ダウンロード確認なし)とダウンロードの
確認ダイアログを表示したい場合があるため、
どうしようか考えています。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-12-31 21:33
「開く」で別のアプリケーションが“開いてしまいます”が、本来その、何も表示されていないフォームが開くはずのデータだったので、考えようによっては、そのフォームの中でアプリケーションが動かないのが変。とも、考えられませんか?
_________________
1

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