The downloadFile() function presented in this page can be used to force download various type of files with PHP: csv, doc, html, jpg, pdf, png, ppt, xls, xml, zip, etc..

The downloadFile() function

// function to download files with php ( https://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);
}
?>

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag adds an image in web page?
<div> <img> <span>
<img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
Which of these CSS codes displays the text oblique?
font-style: italic; text-decoration: underline; font-weight: 500;
#id {
  font-style: italic;
}
Click on the jQuery function used to hide with animation a HTML element.
click() hide() show()
$(document).ready(function() {
  $(".a_class").click(function(){ $(this).hide("slow"); });
});
Click on the correctly defined function in PHP.
fname function() {} function fname() {} function $fname() {};
function fname($a, $b) {
  echo $a * $b;
}
Force Download files with PHP

Last accessed pages

  1. Remove / Get duplicate array values - Reset array keys in PHP (9536)
  2. PHP getElementById and getElementsByTagName (25326)
  3. Check and Validate input field when loses focus, with PHP via Ajax (4624)
  4. Contact page - CoursesWeb (8486)
  5. Tabs effect with CSS (9198)

Popular pages this month

  1. Making DIV Contents Scroll Horizontally, with multiple Div`s inside (2416)
  2. Contact page - CoursesWeb (2335)
  3. Tabs effect with CSS (2326)
  4. Insert, Select and Update NULL value in MySQL (1315)
  5. PHP getElementById and getElementsByTagName (905)