我正在使用CakePHP的Media视图来强制下载文件。我的代码与the example provided in the cookbook非常相似,为方便起见,我会在此处粘贴:
<?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视图是否有某种方式来报告下载确实是成功的?
答案 0 :(得分:2)
检测文件下载完成并非易事。这是用javascript在客户端完成的,但是浏览器不会为你提供任何钩子。
有一个非常聪明的解决方案here(设置一个cookie然后用javascript查找它),但它只会告诉你下载何时开始。