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' (กำหนดโดยผู้ใช้) มีสองพารามิเตอร์ - ชื่อของไฟล์และค่าเริ่มต้นของ 'จริง' สำหรับจำนวนไบต์ที่ส่งคืนหมายความว่าดาวน์โหลดไฟล์ขนาดใหญ่สำเร็จแล้ว ตัวแปร 'chunksize' ได้รับการประกาศด้วยจำนวนไบต์ต่ออันที่จำเป็นต้องอ่าน ตัวแปร 'buffer' ถูกกำหนดให้เป็น null และ 'cnt' ถูกตั้งค่าเป็น 0 ไฟล์ถูกเปิดในโหมดการอ่านไบนารีและกำหนดตัวแปร 'handle'

จนกว่าจะถึงจุดสิ้นสุดของไฟล์ "จัดการ" ในขณะที่ลูปจะทำงานและอ่านเนื้อหาของไฟล์ตามจำนวนชิ้นส่วนที่ต้องอ่าน ถัดไปจะแสดงบนหน้าจอ หากค่าของ 'retbytes' (พารามิเตอร์ตัวที่สองของฟังก์ชัน) เป็นจริง ความยาวของบัฟเฟอร์จะถูกเพิ่มลงในตัวแปร 'cnt' มิฉะนั้น ไฟล์จะถูกปิดและคืนค่า 'cnt' ในท้ายที่สุด ฟังก์ชันจะคืนค่า 'สถานะ'