サーバー上のファイルをダウンロードさせる方法

これは以前書きました「PDFをダウンロードさせる方法」の応用編です。

PDFをブラウザ表示ではなくファイルダウンロードさせたい場合、PDFを作成する機能=PDFプロシージャを実装し、ダウンロードさせるための記述を追加する事により実現しました。ダウンロードさせたいファイルがサーバー上に既にある場合はどうしたらよいでしょうか?


答えはしごく簡単です。プロシージャ(帳票ではない)でHttpResponse拡張データ型を使用します。つまりダウンロードさせるための指定だけでよいのです。

例) サーバー上のExcelファイルをダウンロードさせる場合
//ファイルのContent-Typeを指定
&HttpResponse.AddHeader("Content-Type", "application/vnd.ms-excel")
//クライアントPC上で保存させたいファイル名を指定
&HttpResponse.AddHeader("Content-Disposition", "attachment;filename=test.xls")
//サーバー上のファイルパス
&HttpResponse.AddFile("c:\temp\test.xls")




あとはプロシージャオブジェクトのプロパティを以下のように設定します。
Main programTrue
Call protocolHTTP
(帳票を作成するわけではないのでOutput_fileルールは必要ありません)



続いてプロシージャを呼び出す為のWebパネルを作成します。
画面はダウンロード用のボタンのみ配置しています。




EnterイベントでプロシージャのCallを記述します。









ビルド・実行します。

実行ボタンをクリックすると、ファイルダウンロードのダイアログが表示されます。




コメント

このブログの人気の投稿

データプロバイダーを使いこなそう - 応用編その4 スケジューラー 補足編

HTMLヘッダーにあれこれ直接追加したいとき

GeneXusにおけるWebアプリケーションセキュリティ対策 - OWASP 2010 Top10 Security Risks in GeneXus Applications