برای دانلود فایل در php ، شما نیاز دارید که از طریق اسکریپت مرورگر را مجبور به نمایش فرم دانلود فایل کنید.در این مقاله ، قصد داریم به شما نحوه دانلود فایل در php را از دایرکتری یا سرور را آموزش دهیم.
با استفاده از دو تابع header()
و readfile()
، شما به راحتی می توانید در php فایل دانلود کنید .
در این آموزش به شما نمونه کد برای دانلود فایل در php را نشان می دهیم. کد php اسکریپت زیر به شما اجازه هر نوع فایلی اعم از متن ، عکس ، سند (ورد-اکسل و..) ، pdf ، zip ، .. را می دهد.
دانلود فایل در php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$fileName = basename('netparadis.txt'); $filePath = 'files/'.$fileName; if(!empty($fileName) && file_exists($filePath)){ // Define headers header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=$fileName"); header("Content-Type: application/zip"); header("Content-Transfer-Encoding: binary"); // Read the file readfile($filePath); exit; }else{ echo 'The file does not exist.'; } |
دانلود یک فایل از طریق لینک
بعضی مواقع نیاز است که یک لینک برای دانلود از سرور را برای کاربر نمایش دهید . کد html زیربه شما یک لینک برای دانلود فایل از سرور را نشان می دهد.
1 |
<a href="download.php?file=netparadis.png">Dowload File</a> |
فایل download.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php if(!empty($_GET['file'])){ $fileName = basename($_GET['file']); $filePath = 'files/'.$fileName; if(!empty($fileName) && file_exists($filePath)){ // Define headers header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=$fileName"); header("Content-Type: application/zip"); header("Content-Transfer-Encoding: binary"); // Read the file readfile($filePath); exit; }else{ echo 'The file does not exist.'; } } |
دانلود چندین فایل با php
اگر قصد دارید چندین فایل بر روی سرور را برای دانلود به کاربر ارسال کنید , باید تمام فایل ها را فشرده در قالب یک فایل zip ارسال کنید . برای اینکار از تابع زیر می توانید بهره ببرید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
function zipFilesAndDownload($file_names,$archive_file_name,$file_path) { //create the object $zip = new ZipArchive(); //create the file and throw the error if unsuccessful if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )!==TRUE) { exit("cannot open <$archive_file_name>\n"); } //add each files of $file_name array to archive foreach($file_names as $files) { $zip->addFile($file_path.$files,$files); } $zip->close(); header("Content-type: application/zip"); header("Content-Disposition: attachment; filename=$archive_file_name"); header("Pragma: no-cache"); header("Expires: 0"); readfile("$archive_file_name"); exit; } |
برای استفاده از این تابع هم به صورت زیر عمل میکنیم :
1 2 3 4 |
$file_names=array('test.php','test1.txt'); $archive_file_name='zipped.zip'; $file_path=dirname(__FILE__).'/'; zipFilesAndDownload($file_names,$archive_file_name,$file_path); |
امیدوارم مفید بوده باشه . با نظرات خود ما را خوشحال و درگیر کنید 😀
موفق و پیروز باشید.
سلام من با فایلهایی که اسمشون فارسیه مشکل دارم و بعد از دانلود شدن حجمش ۱ کیلو میشه و باز نمیشه باید چکار کنم؟
سلام. باید اسم فایل ها رو با urlencode تبدیل کنید
تشکر
بسیار مفید بود
ممنون میشم راهنمایی کنید
سلام من یک رشته دارم که میخوام یه دکمه ایجاد کنم که با کلیک روی اون دکمه یه فایل text از روی رشته ایجاد بشه و کاربر بتونه دانلود کنه نمیخوام فایل در سرور ذخیره کنم و بعد برای دانلود بذارم میخوام مثل سایتهایی که پایین صفحه دکمه ای دارن که فایل pdf صفحه رو در لحظه میدن من فایل txt رو بدم
سلام. باید فایل روی سرور ساخته بشه بعد به کاربر بدین. اونایی که میگید pdf میدن یا از api استفاده میکنن یا اینکه خودشون سمت سرور ایجاد میکنن.
سلام مهندس عزیز من یک سایت دانلود فایل فالکون دارم که میخوام لینک دانلود به همین صورت یکتا تولید بشه؟
چه طوری این کارو انجام بدم. ممنون
سلام
https://netparadis.com/generate-onetime-links-in-php
با عرض سلام من یه فیلم تو سایت دارم اما نمیخواهم کسی بتونه اون رو دانلود کنه .
میشه راهنماییم کنید خیلی برام مهمه.
سلام. ممنون. میتونید مثل سایت های نماوا یا فیلیمو از استریم ویدیو استفاده کنید که با روش های معمول کاربر امکان دانلود را نخواهد داشت که البته نیاز به سرور و بعضی ابزار و کانفیگ ها دارید (پروتکل های HLS, RTMP یا MPEG-DASH) که باید با برنامه نویس هماهنگ کنید :
https://netparadis.com/video-stream-in-php/
موفق باشید.
سوکت نویسی یا شبکه نویسی درphp
سلام. بفرمایید
https://netparadis.com/socket-programming-php