例如,我有一个文件通过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);
答案 0 :(得分:0)
关闭并重新打开文件会有帮助吗?然后你就可以到达你离开的地方,并继续推送文件的其余部分。
尝试在cnt + = $ bufferLen;
之后添加类似的内容if(feof($handle) && ($cnt < $totalSize)) {
fclose($handle);
sleep(1);
$handle = fopen($filename, 'rb');
fseek($handle, $cnt);
}
删除if(!bufferLen) sleep(1);
声明。