【发布时间】:2011-06-21 19:08:14
【问题描述】:
我有一个非常简单和标准的 PHP 强制下载脚本。
如何检查下载是否/何时完成,以便在客户端通知用户?我什至不需要实时显示进度,我只对非常具体的事件感兴趣:“下载完成时”。根据我的研究,似乎必须从服务器端确定,因为没有ondownloadready 事件,我认为不可能拦截浏览器事件。
所以看来我最好的选择是将发送的字节数与总字节数与某种客户端/服务器交互进行比较。我将如何检查从服务器发送的字节以进行 PHP 强制下载?是否有某种全局 PHP 变量可以存储我可以用 AJAX ping 通的这些数据?
<?php
header("Content-Type: video/x-msvideo");
header("Content-Disposition: attachment; filename=\"".basename($realpath)."\";");
...
$chunksize = 1 * (1024 * 1024); // how many bytes per chunk
if ($size > $chunksize) {
$handle = fopen($realpath, 'rb');
$buffer = '';
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
ob_flush();
flush();
}
fclose($handle);
}
else {
readfile($realpath);
}
exit();
?>
我需要这个的原因:
对于我正在进行的项目,要求在下载开始后,页面重定向到(或显示)“请稍候,下载完成”页面。然后,一旦完成,它应该重定向到(或显示)“您的下载已完成,谢谢”页面。我愿意接受其他可以达到相同结果的想法。
【问题讨论】:
-
+1 写了一个非常清晰透彻的问题。
-
您好,您有什么解决办法吗?我需要这个东西
标签: php javascript ajax dom mootools