Force Download files with PHP
PHP-MySQL
The downloadFile() function
// function to download files with php ( http://coursesweb.net/php-mysql/ ) // receives the path and filename to download function downloadFile($file) { $ar_ext = explode('.', $file); $ext = strtolower(end($ar_ext)); $extensions = array( 'bmp' => 'image/bmp', 'csv' => 'text/csv', 'doc' => 'application/msword', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'exe' => 'application/octet-stream', 'gif' => 'image/gif', 'htm' => 'text/html', 'html' => 'text/html', 'ico' => 'image/vnd.microsoft.icon', 'jpeg' => 'image/jpg', 'jpe' => 'image/jpg', 'jpg' => 'image/jpg', 'pdf' => 'application/pdf', 'png' => 'image/png', 'ppt' => 'application/vnd.ms-powerpoint', 'psd' => 'image/psd', 'swf' => 'application/x-shockwave-flash', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'xhtml' => 'application/xhtml+xml', 'xml' => 'application/xml', 'xls' => 'application/vnd.ms-excel', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'zip' => 'application/zip' ); $ctype = isset($extensions[$ext]) ? $extensions[$ext] : 'application/force-download'; if (file_exists($file) && is_readable($file)) { // required for IE, otherwise Content-disposition is ignored if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); header('Pragma: public'); // required header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: private',false); // required for certain browsers header('Content-Type: '. $ctype); header('Content-Disposition: attachment; filename='. $file .';' ); header('Content-Transfer-Encoding: binary'); header('Content-Length: '. filesize($file)); readfile($file); } else { header('HTTP/1.0 404 Not Found'); echo "<h1>Error 404: File Not Found: <br /><em>$file</em></h1>"; } }Example of usage:
<?php // HERE ADD THE downloadFile() function $dir = 'download/'; // folder wth files for download // $_GET['file'] contains the name and extension of the file stored in 'download/' if (isset($_GET['file'])) { $file = $dir . strip_tags($_GET['file']); downloadFile($file); } ?>
0 comments:
Post a Comment