最近のアクセス:
HTTP プロトコルを使用してファイルをダウンロードする方法

ここでは、アプリケーションでファイルのダウンロードを簡単に管理する方法について説明します。
次のように、ユーザーイベントでファイルの実行または保存のどちらを行うかを確認するメッセージを表示するとします:
イメージ:14147.png
この場合、次の操作が必要です。
HTTP 応答のヘッダーにデータを追加するには、HTTP プロトコルを使用して GeneXus オブジェクトを呼び出せるようにしておく必要があります。HTTP プロトコルを使用してプロシージャーを呼び出せるようにするには、上記の設定が必要です。
ファイルをダウンロードする場合の例を以下に示します。

プロシージャーソース

/*
コンテキスト (WebSession、データベースなど) から &contenttype、&filename、および &filepath を取得。 
セキュリティ上の理由 (パストラバーサル) から、parm 経由で受信してはいけない。
*/
&HttpResponse.AddHeader(!"Content-Type", &contenttype) //&contenttype は 'application/x-zip-compressed'
&HttpResponse.AddHeader(!"Content-Disposition", !"attachment;filename="+&filename) //&filename は 'download.zip'
&HttpResponse.AddFile(&filepath) //&filepath は 'C:\temp\download.zip'
&HttpResponse.AddHeader(!"Pragma", !"public")
&HttpResponse.AddHeader(!"Cache-Control", !"max-age=0")

GeneXus 内で Download を呼び出す方法:

Event 'Download'
  ProcedureHTTPDownload.Link()   
EndEvent

考慮事項

アプリケーションに &filepath へのフルアクセス権があることを確認します。アプリケーションが &filepath にアクセスできない場合、処理に失敗します (アクセス拒否の例外がスローされます)。

参考情報

[ Call protocol ] プロパティ


サブページ
Created: 14/09/18 03:08 by Admin Last update: 24/03/25 23:57 by Admin
カテゴリ
Powered by GXwiki 3.0