1

ファイルのダウンロードを強制するために、CakePHP の Media ビューを使用しています。私のコードは、クックブックで提供されている例とほとんど同じです。便宜上、ここに貼り付けます。

<?php
class ExampleController extends AppController {
    public function download () {
        $this->viewClass = 'Media';
        // Download app/outside_webroot_dir/example.zip
        $params = array(
            'id'        => 'example.zip',
            'name'      => 'example',
            'download'  => true,
            'extension' => 'zip',
            'path'      => APP . 'outside_webroot_dir' . DS
        );
        $this->set($params);
    }
}

データベースには、ファイルがダウンロードされた回数を追跡するフィールドがあります。この数値ができるだけ正確であることを確認する方法を探しています。そのため、ユーザーのダウンロードがキャンセルされたりタイムアウトしたりした場合、数値は増加しません。ダウンロードが実際に成功したことを CakePHP の Media ビューが報告する方法はありますか?

4

1 に答える 1

2

ファイルのダウンロードがいつ完了したかを検出するのは簡単なことではありません。これは、JavaScript を使用してクライアント側で実行されるものですが、ブラウザーはそのためのフックを提供しません。

ここには非常に巧妙な解決策があります(Cookie を設定してから JavaScript で検索します) が、ダウンロードが開始されたときにのみ通知されます。

于 2012-04-10T17:11:07.413 に答える