检测下载是否完成的最佳方法是什么,因为之后我想更新数据库.
我尝试了PHP手册中的一些代码,但它对我没有太大作用:
header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($file)); header("Content-Disposition: attachment; filename=$filename"); // buffered read not using readfile($file); if ($fp = fopen($bestand, 'rb')) { while (!feof($fp)) { $buf = fread($fp, 4096); echo $buf; $bytesSent += strlen($buf); /* We know how many bytes were sent to the user */ } } if ($bytesSent == filesize($fp)) { //do something with db }
Marc W.. 9
这并不是真的会告诉你是否为用户完成了下载.它会告诉你,当你完成发送字节给用户,但它没有提到的用户有多少人实际已收到.
实际上,没有办法用PHP(服务器端,而不是客户端语言)来真正检测文件下载何时完成.您可以做的最好的事情是在数据库开始时将数据库记录下来.如果您绝对,完全且完全需要知道下载何时完成,则必须执行诸如嵌入Java小程序或使用Flash之类的操作.但是,就用户的可用性而言,通常这不是正确的答案(为什么要求他们安装Java或Flash只是为了从您那里下载内容?).
这并不是真的会告诉你是否为用户完成了下载.它会告诉你,当你完成发送字节给用户,但它没有提到的用户有多少人实际已收到.
实际上,没有办法用PHP(服务器端,而不是客户端语言)来真正检测文件下载何时完成.您可以做的最好的事情是在数据库开始时将数据库记录下来.如果您绝对,完全且完全需要知道下载何时完成,则必须执行诸如嵌入Java小程序或使用Flash之类的操作.但是,就用户的可用性而言,通常这不是正确的答案(为什么要求他们安装Java或Flash只是为了从您那里下载内容?).