การทำ Force download ด้วย PHP นั้น ไม่ไช่เรื่องใหม่อะไร มีการเขียนโค้ดด้วยลักษณะนี้อยู่บ่อยๆ แต่ผมต้องนำมาแปะเป็นทริคเล็กน้อยกันตัวเองลืมครับ ประโยชน์ของมันคือในกรณีที่เราไม่สามารถเข้าไปจัดการ Apache config ได้เราสามารถใช้วิธีนี้แทนได้
/** * DOWNLOAD * * @author PHONGTHORN KUMKANKAEW * @version 1.0.0 * @since 17/2/2015 * */ if(isset($_GET['file']) && !empty($_GET['file'])) { $file_name = 'download/' . $_GET['file']; if(is_file($file_name)) { if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); } switch(strtolower(substr(strrchr($file_name, '.'), 1))) { case 'pdf': $mime = 'application/pdf'; break; case 'zip': $mime = 'application/zip'; break; case 'jpeg': case 'jpg': $mime = 'image/jpg'; break; default: $mime = 'application/force-download'; } header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Last-Modified: ' . gmdate ('D, d M Y H:i:s', filemtime ($file_name)) . ' GMT'); header('Cache-Control: private',false); header('Content-Type: ' . $mime); header('Content-Disposition: attachment; filename="' . basename($file_name) . '"'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($file_name)); header('Connection: close'); readfile($file_name); exit(); } }
จากตัวอย่างจะสร้างไฟล์ PHP ชื่อ download.php จากนั้น get ค่าชื่อไฟล์ที่เราต้องการโหลดจากนั้น ไฟล์ download.php จะสั่งให้ browser ทำการโหลดไฟล์จาก Server ของเรา
ความคิดเห็น
แสดงความคิดเห็น