如何让php处理不完整文件的文件下载?

时间:2010-06-23 20:29:42

标签: php upload ftp download buffer

例如,我有一个文件通过ftp和文件大小更改上传。我事先知道文件大小。那么即使文件没有完成上传并且在完成缓冲之前等待文件大小匹配,我将如何将php发送到客户端浏览器。下面的代码不会更新句柄,也不会看到对文件所做的更改。我可以每次都通过fopen但也许有正确的方法吗?感谢

$buffer = '';
$cnt =0;
$handle = fopen($filename, 'rb');
if ($handle === false) {
  return false;
}
while ($cnt < $totalSize) {
  $buffer = fread($handle, 2048);
  echo $buffer;
  ob_flush();
  flush();
  $bufferLen = strlen($buffer);
  $cnt += $bufferLen;
  if(!$bufferLen) sleep(1);
}
fclose($handle);

1 个答案:

答案 0 :(得分:0)

关闭并重新打开文件会有帮助吗?然后你就可以到达你离开的地方,并继续推送文件的其余部分。

尝试在cnt + = $ bufferLen;

之后添加类似的内容
if(feof($handle) && ($cnt < $totalSize)) {
  fclose($handle);
  sleep(1);
  $handle = fopen($filename, 'rb');
  fseek($handle, $cnt);
}

删除if(!bufferLen) sleep(1);声明。