Computer >> Máy Tính >  >> Lập trình >> PHP

Làm thế nào để tải xuống các tệp lớn thông qua tập lệnh PHP?

Để tải xuống các tệp lớn thông qua tập lệnh PHP, mã như sau -

Ví dụ

<?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;
}
?>

Đầu ra

Điều này sẽ tạo ra kết quả sau -

The large file will be downloaded.

Hàm ‘readfile_chunked’ (do người dùng định nghĩa) nhận vào hai tham số - tên của tệp và giá trị mặc định là ‘true’ cho số byte được trả về có nghĩa là các tệp lớn đã được tải xuống thành công. Biến ‘chunksize’ đã được khai báo với số byte trên mỗi chunk cần được đọc. Biến ‘buffer’ được gán cho null và ‘cnt’ được đặt thành 0. Tệp được mở ở chế độ đọc nhị phân và được gán cho biến ‘handle’.

Cho đến khi đạt đến cuối tệp của ‘tay cầm’, vòng lặp while sẽ chạy và đọc nội dung của tệp dựa trên số lượng phần cần đọc. Tiếp theo nó được hiển thị trên màn hình. Nếu giá trị của ‘retbytes’ (tham số thứ hai của hàm) là true, độ dài của bộ đệm sẽ được thêm vào biến ‘cnt’. Nếu không, tệp sẽ bị đóng và giá trị ‘cnt’ được trả về. Cuối cùng, hàm trả về "trạng thái".