Magento 2, Magento Development, Customization, Extension Development and Integration, Optimization, SEO and Responsive Design

Magento 2, Magento Development, Customization, Extension Development and Integration, Optimization, SEO and Responsive Design

PHP script to download multiple files also get all the files from folder

In this post you can get the list of files from your folder and you can download particular file.

For this you need to create two files as following.

Step1: Create one index.php file and add following code.

$path = $_SERVER['DOCUMENT_ROOT']."/your_folder/"; 
$files = scandir($path);
foreach ($files as $filename)
    if($filename=="." || $filename==".." || $filename=="download.php" || $filename=="index.php")
        //this will not display specified files
        echo "<label >".$count.".&nbsp;</label>";
        echo "<a href="download.php/?filename=".$filename."">".$filename."</a><br/>";

Step2: Create one download.php file and add following code.

function output_file($file, $name, $mime_type='')
 This function takes a path to a file to output ($file),  the filename that the browser will see ($name) and  the MIME type of the file ($mime_type, optional).
 //Check the file premission
 if(!is_readable($file)) die('File not found or inaccessible!');
 $size = filesize($file);
 $name = rawurldecode($name);
 /* Figure out the MIME type | Check in array */
  "pdf" => "application/pdf",
  "txt" => "text/plain",
  "html" => "text/html",
  "htm" => "text/html",
 "exe" => "application/octet-stream",
 "zip" => "application/zip",
 "doc" => "application/msword",
 "xls" => "application/",
 "ppt" => "application/",
 "gif" => "image/gif",
 "png" => "image/png",
 "jpeg"=> "image/jpg",
 "jpg" =>  "image/jpg",
 "php" => "text/plain"
  $file_extension = strtolower(substr(strrchr($file,"."),1));
  if(array_key_exists($file_extension, $known_mime_types)){
  } else {
 //turn off output buffering to decrease cpu usage
 // required for IE, otherwise Content-Disposition may be ignored
  ini_set('zlib.output_compression', 'Off');
 header('Content-Type: ' . $mime_type);
 header('Content-Disposition: attachment; filename="'.$name.'"');
 header("Content-Transfer-Encoding: binary");
 header('Accept-Ranges: bytes');
 /* The three lines below basically make the 
    download non-cacheable */
 header("Cache-control: private");
 header('Pragma: private');
 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
 // multipart-download and download resuming support
 list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
 list($range) = explode(",",$range,2);
 list($range, $range_end) = explode("-", $range);
 if(!$range_end) {
 } else {
 $new_length = $range_end-$range+1;
 header("HTTP/1.1 206 Partial Content");
 header("Content-Length: $new_length");
 header("Content-Range: bytes $range-$range_end/$size");
 } else {
 header("Content-Length: ".$size);
 /* Will output the file itself */
 $chunksize = 1*(1024*1024); //you may want to change this
 $bytes_send = 0;
 if ($file = fopen($file, 'r'))
 fseek($file, $range);
 while(!feof($file) && 
  (!connection_aborted()) && 
  $buffer = fread($file, $chunksize);
  print($buffer); //echo($buffer); // can also possible
  $bytes_send += strlen($buffer);
 } else
 //If no permissiion
 die('Error - can not open file.');
//Set the time out

//path to the file

//Call the download function with file path,file name and file type
output_file($file_path, ''.$_REQUEST['filename'].'', 'text/plain');


Change 'your_folder' with you folder name in both files.

Please support us, Like us on Facebook.

  1. error in index.php code

  2. solution is to change last echo line:
    echo ''.$filename.'



Copyright @ 2017 HKBlog.