关于http标头:如何检测用户何时成功完成在php中下载文件

How to detect when a user has successfully finished downloading a file in php

我有一个处理文件下载请求的PHP页面。我需要能够检测文件下载成功的时间。怎么能做到?也许有一些方法可以检测这个客户端,然后将确认发送到服务器。

谢谢。

编辑:我的意思是,页面正在这样做:

1
2
3
4
5
$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);


在单独的php脚本中处理下载(最好不要只执行readfile($file);,您还可以提供恢复下载的功能,如本问题中所述)。然后在这个脚本中,当您读取最后一个块并发送它时,您就知道所有文件都已发送。这与知道收到了所有内容不同,但对于大多数场景来说,这就足够了。


treb说了什么,但我应该补充一点,您可以检查客户端在下载过程中是否仍在使用connection_status()进行监听。

别忘了在向客户机写入数据后,flush()会帮助检测连接是否仍然正常。