Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 스크립트를 통해 대용량 파일을 다운로드하는 방법은 무엇입니까?

<시간/>

PHP 스크립트를 통해 대용량 파일을 다운로드하려면 코드는 다음과 같습니다. -

예시

<?php
function readfile_chunked($filename,$retbytes=true) {
   $chunksize = 1*(1024*1024); // how many bytes per chunk the user wishes to read
   $buffer = '';
   $cnt =0;
   $handle = fopen($filename, 'rb');
   if ($handle === false) {
      return false;
   }
   while (!feof($handle)) {
      $buffer = fread($handle, $chunksize);
      echo $buffer;
      if ($retbytes) {
         $cnt += strlen($buffer);
      }
   }
   $status = fclose($handle);
   if ($retbytes && $status) {
      return $cnt; // return number of bytes delivered like readfile() does.
   }
   return $status;
}
?>

출력

이것은 다음과 같은 출력을 생성합니다 -

The large file will be downloaded.

함수 'readfile_chunked'(사용자 정의)는 파일 이름과 반환된 바이트 수에 대한 기본값인 'true'의 두 가지 매개변수를 취합니다. 이는 대용량 파일이 성공적으로 다운로드되었음을 의미합니다. 'chunksize' 변수는 읽어야 하는 청크당 바이트 수로 선언되었습니다. 'buffer' 변수는 null에 할당되고 'cnt'는 0으로 설정됩니다. 파일은 바이너리 읽기 모드로 열리고 변수 'handle'이 할당됩니다.

'핸들'의 파일 끝에 도달할 때까지 while 루프가 실행되고 읽어야 하는 청크 수에 따라 파일 내용을 읽습니다. 다음으로 화면에 표시됩니다. 'retbytes'(함수의 두 번째 매개변수) 값이 true이면 버퍼의 길이가 'cnt' 변수에 추가됩니다. 그렇지 않으면 파일이 닫히고 'cnt' 값이 반환됩니다. 결국 함수는 '상태'를 반환합니다.