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.
Step2: Create one download.php file and add following code.
Change 'your_folder' with you folder name in both files.
For this you need to create two files as following.
Step1: Create one index.php file and add following code.
<?php $path = $_SERVER['DOCUMENT_ROOT']."/your_folder/"; $files = scandir($path); $count=1; foreach ($files as $filename) { if($filename=="." || $filename==".." || $filename=="download.php" || $filename=="index.php") { //this will not display specified files } else { echo "<label >".$count.". </label>"; echo "<a href="download.php/?filename=".$filename."">".$filename."</a><br/>"; $count++; } } ?>
Step2: Create one download.php file and add following code.
<?php 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 */ $known_mime_types=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/vnd.ms-excel", "ppt" => "application/vnd.ms-powerpoint", "gif" => "image/gif", "png" => "image/png", "jpeg"=> "image/jpg", "jpg" => "image/jpg", "php" => "text/plain" ); if($mime_type==''){ $file_extension = strtolower(substr(strrchr($file,"."),1)); if(array_key_exists($file_extension, $known_mime_types)){ $mime_type=$known_mime_types[$file_extension]; } else { $mime_type="application/force-download"; }; }; //turn off output buffering to decrease cpu usage @ob_end_clean(); // required for IE, otherwise Content-Disposition may be ignored if(ini_get('zlib.output_compression')) 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 if(isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2); list($range) = explode(",",$range,2); list($range, $range_end) = explode("-", $range); $range=intval($range); if(!$range_end) { $range_end=$size-1; } else { $range_end=intval($range_end); } $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 { $new_length=$size; 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')) { if(isset($_SERVER['HTTP_RANGE'])) fseek($file, $range); while(!feof($file) && (!connection_aborted()) && ($bytes_send<$new_length) ) { $buffer = fread($file, $chunksize); print($buffer); //echo($buffer); // can also possible flush(); $bytes_send += strlen($buffer); } fclose($file); } else //If no permissiion die('Error - can not open file.'); //die die(); } //Set the time out set_time_limit(0); //path to the file $file_path=$_SERVER['DOCUMENT_ROOT'].'/your_folder/'.$_REQUEST['filename']; //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.
Subscribe to:
Post Comments (Atom)
error in index.php code
ReplyDeleteA8System.eu solution is to change last echo line:
ReplyDeleteecho ''.$filename.'
';