FileDownloadPluginについて

9月6日 使い方一部修正 a href=”[(site_url)]?id=数字&d=名前.pdf” でしたね。
それとFileDOwnloadFolderもホームからの相対がよろしいようで。例えば a/b です。
さもないと別構成にコピーした時に困りますから。

以下で、2012年9月4日から使用中です。

MODX :: [SOLVED] FileDownload/FileDownloadPlugin problem
追加のチェックが必要なのかな。プラグインの先頭に追加だって。
$loginCheck = $modx->getLoginUserID();
If ($loginCheck == '') {
// Put something in here to prevent a download if not signed in!!!
$_GET['d'] = '';
}

ところで、使い方が違ったかもね。
/virtual/*/home/*/*/*
をFileDownloadFolderとしておいて、

1 の推移

と呼び出してOKでした。

FileDownloadPlugin 1.2.0 | MODX
からの仮和訳を以下に示します。

2007年3月1日リリース
セキュアなダウンロードをMODXサイト内で行う必要があったので、このプラグインを作りました。
FileDownloadスニペットを使っていましたが、附属のdownload.phpはドキュメントの権限を考慮してくれませんし、ファイルへの実際の(相対)パスが見えてしまいます。そこでFileDownloadスニペットに触発されてこのプラグインを作りました。コンテンツタイプをチェックするコードはFileDownloadスニペット(GPL)から取りました。
このプラグインで明らかにするファイルは、テンプレート変数”FileDownloadFolder”で結びつけられたものです。”FileDownloadFolder”で指定された相対または絶対パスからの相対パスですべてのファイルは指定され、”..” でのパス遡上は許されません。したがって、ファイルをダウンロードするユーザーはこれらのファイルの物理的場所が分かりません。
この場所はMODXのインストールされたルートとか”assets”とかから離しておくのも可能で、ネットワーク上のフォルダでさえもそのドキュメントを結び付けできます。
“&d=” パラメータで指定されるファイルが見つかってアクセス可能なら、クライアントに向けて流しだされますし、”&d=” ファイルが無効とか、テンプレート変数が指定されないとか、アクセク不能の場合、 “&d=” が指定されなかったかのように”parent” ドキュメントの内容が送られます。
FileDownloadPluginの機能:
・そのドキュメントのテンプレート変数”FileDownloadFolder” との相対パスでファイルのダウンロードを取り扱います。
・ドキュメントの権限を尊重する、つまり、プラグインコードはユーザがドキュメントの権限を持たないと呼び出されませんし、ユーザーには物理パスが分かりませんし、URLはフレンドリー形式で提供されるからです。
・大きなファイルをサポートし、タイムアウトなし、少ない(設定可)メモリ使用。
・ダウンロード用ソフトウェアなどで使われるHTTP/206 Partial Contentでの部分的ダウンロードをサポート。
・HTTP/304 Not Modifiedでの改変/キャッシュのチェックをサポート。
・クライアントが切断したかをチェックしての、長いダウンロードのサポート。

FileDownloadスニペットとの統合化
このプラグインはFileDownloadスニペットと統合化します。ページ中でのファイルのリストを組み入れるのにFileDownloadスニペットを使いながら、このプラグインでダウンロードさせられます。詳細は次を参照: http://modxcms.com/FileDownload-502.html
(訳注:このリンクは切れているようです。)

FileDownloadPlugin は、テンプレート変数に特定のファイルへのフォルダのパスを指定して、ダウンロードするフォルダを結び付け、ドキュメントのパーミッションを尊重するようなファイルダウンロードにさせ、大きなファイル、HTTP部分的ダウンロード、Eタグなどを可能にします。使い方は次のように:

http://www.mymodxsite.com/downloads.html/abao0995u.exe
http://www.mymodxsite.com/downloads.html&d=abao0995u.exe
http://www.mymodxsite.com/index?q=1&d=abao0995u.exe

インストール方法
インストール
1) “FileDownloadFolder” というテンプレート変数を MODx の管理画面で作成します。(訳注:a.このテンプレート変数を利用するテンプレートを指定する必要がありますし、後程作成する、b.このプラグインを使うためのドキュメントでは当該テンプレートを指定する必要があります。)
2) プラグインの新規作成画面を開き、”FileDownloadPlugin” という名前にします。
3) 附属のZIPファイルに同梱の “FileDownloadPlugin1.0.php” の内容をコピーしてブラグインコードのボックスに貼り付けます。1行目の と最後の行の ?> は省きます。(訳注:今回使用したZIPファイルでは1.2だったような。)
4) このプラグインの設定で、 OnWebPagePrerender をチェックしてこのイベントと結びつけます。
5) 保存します。

これでプラグインを使用開始できます。新規のドキュメントを作り、 "downloads" という名前にし、(訳注:上記b.のステップのようにテンプレートを指定すると出てくる) "FileDownloadFolder" のテンプレート変数を、例えば"D:/archives" というパスにします、このディレクトリには"myzipfile.zip" が入っているものとします。
これで、 http://www.mymodxsite.com/index?q=downloads&d=myzipfile.zip と指定すれば、 "downloads" というドキュメントへのアクセス権をクライアントが持つ場合に限り、 "D:/archives/myzipfile.zip" をクライアントへ流します。

もしフレンドりURLを使用中で、次の形でファイルを見させたいなら:
http://www.mymodxsite.com/downloads.html/myzipfile.zip
".htaccess" で指定するrewrite rule を修正して:
RewriteRule ^([^/]*)/?(.*)$ index.php?q=$1&d=$2 [L,QSA]
ともできます。

要注意! フレンドりURLはフラットなドキュメントアリアス構造でしか機能しませんから、フレンドりアリアスパスの利用は No に指定します。したがって、次の形は使えません : http://www.mymodxsite.com/en/products/downloads.html/myzipfile.zip.

また違った変数名とかメモリブロックサイズをプラグインで使いたいなら、ファイル中の最初にある次の定義を変えるだけです:

define('FILE_DOWNLOAD_BLOCK_SIZE', 256 * 1024);
define('FILE_DOWNLOAD_VARIABLE', 'FileDownloadFolder');

以上です。Good luck

コメントを残す