دانلود خودکار یک فایل CSV با استفاده از PHP، یک ساختار خاص از کد را ایجاد میکند که با فایلهایی که عموما ایجاد میکنیم تفاوت دارند. برای دانلود فایلهای CSV، باید از فانکشن ()header
و پارامتر php://output
استفاده شود. این آموزش از باورژن به سه قسمت تقسیم شده است تا اهمیت هر قطعه کد را نشان دهیم.
Automatically downloading a CSV file with PHP takes a particularly different structure of code that would be present in the general creation of files
ست کردن فانکشن header
ست کردن هدر ریکوئستهای HTTP هنگام دانلود اتوماتیک فایلها، از اهمیت بالایی برخوردار است. اینکار به وسیله آپشنهای خاص به مرورگر اطلاع میدهد که ریکوئستی متفاوت از ریکوئست استاندارد HTTP است. فانکشن ()header
را فراخوانی کرده و از پارامترهای زیر در آن استفاده کنید.
یکی از آپشنهای بسیار مهم در خط دوم کد، آپشن filename است. اینجاست که می خواهید فایلی را تولید و دانلود کنید.
// Set the content type
header('Content-type: application/csv');
// Set the file name option to a filename of your choice.
header('Content-Disposition: attachment; filename=myCSV.csv');
// Set the encoding
header("Content-Transfer-Encoding: UTF-8");
پر کردن فایل CSV
در مرحله بعد، به جای نوشتن نام فایل واقعی، پارامتر ()fopen
به ما امکان دسترسی به بافر خروجی PHP را میدهد.
$f = fopen('php://output', 'a'); // Configure fopen to write to the output buffer
نوشتن داده و شروع دانلود
با دو بخش آخر که در کد ما اجرا شده است، میتوانیم برخی از دادههای ساختگی را برای نوشتن اضافه کنیم. در آخر، فایل مجازی را میبندیم و متعاقباً دانلود شروع میشود.
// Write to the csv
fputcsv($f, ["cell1", "cell2", "cell3"]);
// Close the file
fclose($f);
// ... download will start
ترکیب تمامی کدها با هم
حال اگر همه سینتکسها را در کنار هم قرار دهیم، باید قطعه کد زیر را داشته باشیم.
// Set the content type
header('Content-type: application/csv');
// Set the file name option to a filename of your choice.
header('Content-Disposition: attachment; filename=myCSV.csv');
// Set the encoding
header("Content-Transfer-Encoding: UTF-8");
$f = fopen('php://output', 'a'); // Configure fopen to write to the output buffer
// Write to the csv
fputcsv($f, ["cell1", "cell2", "cell3"]);
// Close the file
fclose($f);
// ... download will start
رقیه اباذری
تو دانشگاه IT خوندم و اکثر منابع کتابهای ترجمه شده بودند و صدالبته مبهم :( مثلا element رو "عنصر" ترجمه میکردن و من همیشه میرفتم تو شیمی و جدول مندلیف. تو باورژن سعی کردم تا حد ممکن مطالب رو با زبان ساده و قابل درک بنویسم. باشد که کسانی که تازه پا به عرصه برنامهنویسی گذاشتن، راغبتر بشن و با نظرات و فیدبکهای شما راه هموارتر بشه:)
دیدگاهها
ثبت دیدگاه