我有一个处理文件下载请求的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);
答案 0 :(得分:11)
在单独的php脚本中处理下载(最好比readfile($file);
做更多的事情,您还可以提供恢复下载的功能,如此question)。
然后在此脚本中,当您读取最后一个块并发送它时,您知道所有文件都已发送。这与获知所有内容并不相同,但对于大多数情况来说应该足够了。
答案 1 :(得分:4)
Treb说了什么,但我应该补充一点,你可以通过connection_status()检查客户端是否仍在收听。
在向客户端写入数据后,不要忘记flush()
,它有助于检测连接是否仍在运行。