2010-06-23 4 views
0

예를 들어 ftp 및 파일 크기가 변경되어 파일이 업로드되고 있습니다. 나는 파일 크기를 미리 알고있다. 그렇다면 파일 업로드가 완료되지 않았고 버퍼링이 완료되기 전에 파일 크기가 일치하기를 기다리지 만 클라이언트 브라우저로 보내려면 어떻게해야합니까? 아래 코드는 핸들을 업데이트하지 않으며 파일에 대한 변경 사항을 보지 않습니다. 매번 fopen을 통과 할 수는 있지만 적절한 방법이있을 수 있습니까? 감사합니다불완전 파일의 PHP 다운로드를 어떻게 처리합니까?

$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

파일을 닫은 후 다시 열면 도움이 될까요? 그런 다음 중단 한 부분을 찾아서 나머지 파일을 계속 푸시 할 수 있습니다.

cnt + = $ bufferLen 뒤에 다음과 같이 추가하십시오.

if(feof($handle) && ($cnt < $totalSize)) { 
    fclose($handle); 
    sleep(1); 
    $handle = fopen($filename, 'rb'); 
    fseek($handle, $cnt); 
} 

if(!bufferLen) sleep(1); 문을 제거하십시오.

+0

그게 바로 감사합니다. –

관련 문제