如何检测用户何时成功完成在php中下载文件

时间:2008-10-11 20:27:07

标签: php http-headers attachment

我有一个处理文件下载请求的php页面。我需要能够检测文件何时成功下载。如何才能做到这一点?也许有一些方法可以检测到这个客户端,然后向服务器发送确认信息。

感谢。

编辑: 通过句柄,我的意思是页面正在做这样的事情:

$file = '/var/www/html/file-to-download.xyz';
  header('Content-Type: application/octet-stream');
  header('Content-Length: ' . filesize($file));
  header('Content-Disposition: attachment; filename=' . basename($file));
  readfile($file);

2 个答案:

答案 0 :(得分:11)

在单独的php脚本中处理下载(最好比readfile($file);做更多的事情,您还可以提供恢复下载的功能,如此question)。 然后在此脚本中,当您读取最后一个块并发送它时,您知道所有文件都已发送。这与获知所有内容并不相同,但对于大多数情况来说应该足够了。

答案 1 :(得分:4)

Treb说了什么,但我应该补充一点,你可以通过connection_status()检查客户端是否仍在收听。

在向客户端写入数据后,不要忘记flush(),它有助于检测连接是否仍在运行。