Working with Files Download a File Estimated reading: 2 minutes 10 views Contributors সারাংশঃ এই টিউটোরিয়ালে, আপনি শিখবেন কীভাবে PHP ব্যবহার করে readfile() ফাংশনের মাধ্যমে একটি ফাইল ডাউনলোড করবেন।Introduction to the PHP readfile() functionreadfile()ফাংশন একটি ফাইল থেকে ডেটা পড়ে এবং তা আউটপুট বাফারে লেখে।এখানে readfile()ফাংশনের সিনট্যাক্স দেওয়া হলোঃreadfile ( string $filename , bool $use_include_path = false , resource $context = ? ) : int|false readfile()ফাংশনের নিম্নলিখিত প্যারামিটারগুলি রয়েছেঃ$filename হলো ফাইলটির path. $use_include_path যদি true সেট করা হয়, তাহলে function include path-ফাইলটি খুঁজে বের করবে। $context হলো স্ট্রিম কনটেক্সট নির্দিষ্ট করে।readfile() ফাংশনটি যদি ফাইল থেকে সফলভাবে ডেটা পড়ে, তাহলে এটি বাইটের সংখ্যা ফেরত দেয়, অথবা ব্যর্থ হলে false ফেরত দেয়।PHP download file exampleনিম্নলিখিত উদাহরণটি দেখাচ্ছে কীভাবে readfile() ফাংশন ব্যবহার করে readme.pdf ফাইলটি ডাউনলোড করা যায়ঃ<?php $filename = 'readme.pdf'; if (file_exists($filename)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filename)); readfile($filename); exit; }PHP download file with a download rate limitdownload rate limit করতে, আপনি নিচের স্ক্রিপ্টটি ব্যবহার করতে পারেনঃ<?php $file_to_download = 'book.pdf'; $client_file = 'mybook.pdf'; $download_rate = 200; // 200Kb/s $f = null; try { if (!file_exists($file_to_download)) { throw new Exception('File ' . $file_to_download . ' does not exist'); } if (!is_file($file_to_download)) { throw new Exception('File ' . $file_to_download . ' is not valid'); } header('Cache-control: private'); header('Content-Type: application/octet-stream'); header('Content-Length: ' . filesize($file_to_download)); header('Content-Disposition: filename=' . $client_file); // flush the content to the web browser flush(); $f = fopen($file_to_download, 'r'); while (!feof($f)) { // send the file part to the web browser print fread($f, round($download_rate * 1024)); // flush the content to the web browser flush(); // sleep one second sleep(1); } } catch (\Throwable $e) { echo $e->getMessage(); } finally { if ($f) { fclose($f); } }কীভাবে কাজ করেঃপ্রথমে, ডাউনলোড করার জন্য ফাইলের path ($file_to_download) এবং ডাউনলোড হওয়া ফাইলের নাম ($client_file) সংজ্ঞায়িত করুন। এরপর, ডাউনলোড রেট ($download_rate) সংজ্ঞায়িত করুন এবং এটি ২০০ Kb/s তে সেট করুন। তারপর, যদি ফাইলটি না থাকে অথবা একটি সাধারণ ফাইল না হয়, তাহলে এক্সসেপশন throw করুন। এরপর, ফাইলের অংশটি পড়ুন এবং ১ সেকেন্ডের জন্য স্লিপ করুন যতক্ষণ না আরও ফাইল ডেটা পড়া যায়। অবশেষে, fclose() ফাংশন ব্যবহার করে ফাইলটি বন্ধ করুন।সারাংশঃPHP তে readfile() ফাংশন ব্যবহার করে একটি ফাইল ডাউনলোড করুন। Working with Files - Previous Read a File into a String: file_get_contents() Next - Working with Files Create Temp File