2011-02-05 4 views
3

나는 매우 간단하고 표준적인 PHP 강제 다운로드 스크립트를 가지고 있습니다.다운로드가 완료되면 탐지

클라이언트 측에서 사용자에게 알리기 위해 다운로드가 완료되었는지 여부를 어떻게 확인합니까? 실시간으로 진행 상황을 표시 할 필요조차 없으며 매우 특정한 이벤트에만 관심이 있습니다. "다운로드가 완료되면"입니다. 내 연구를 바탕으로, 그것은 서버 측에서 결정되어야 할 것 같습니다. ondownloadready 이벤트가 없기 때문에 브라우저 이벤트를 가로 챌 수는 없다고 생각합니다.

그래서 가장 좋은 방법은 일종의 clientside/severside 상호 작용으로 총 바이트 수를 비교하는 것입니다. PHP 강제 다운로드를 위해 서버에서 보낸 바이트를 확인하는 방법은 무엇입니까? AJAX로 핑 (ping) 할 수있는 이러한 데이터를 저장하는 일종의 글로벌 PHP 변수가 있습니까?

<?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(); 
    ?> 

나는이 필요한 이유 : 내가 일하고

프로젝트에 대한

, 다운로드 시작 후 페이지가이 "기다려주십시오 다운로드가 완료되는 동안로 리디렉션 (또는 표시)하는 것이 필요하다 "페이지. 그런 다음 완료되면 "다운로드 완료, 감사합니다"페이지로 리디렉션 (또는 표시)해야합니다. 나는 같은 결과를 얻을 수있는 다른 아이디어에 대해 열려 있습니다.

+0

+1 매우 명확하고 철저하게 질문을 작성하기위한 :

여기에 다운로드가 완료되면 감지하는 AJAX 설문 조사를 사용하여 설명 전체 스레드입니다. – jmort253

답변

관련 문제