Created
June 5, 2020 08:08
-
-
Save aonurdemir/80948d48f9a76e5d6e665e11b08b1ed7 to your computer and use it in GitHub Desktop.
Download File php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/*db connectors*/ | |
include('dbconfig.php'); | |
/*function to set your files*/ | |
function output_file($file, $name, $mime_type='') | |
{ | |
if(!is_readable($file)) die('File not found or inaccessible!'); | |
$size = filesize($file); | |
$name = rawurldecode($name); | |
$known_mime_types=array( | |
"htm" => "text/html", | |
"exe" => "application/octet-stream", | |
"zip" => "application/zip", | |
"doc" => "application/msword", | |
"jpg" => "image/jpg", | |
"php" => "text/plain", | |
"xls" => "application/vnd.ms-excel", | |
"ppt" => "application/vnd.ms-powerpoint", | |
"gif" => "image/gif", | |
"pdf" => "application/pdf", | |
"txt" => "text/plain", | |
"html"=> "text/html", | |
"png" => "image/png", | |
"jpeg"=> "image/jpg" | |
); | |
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"; | |
}; | |
}; | |
@ob_end_clean(); | |
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'); | |
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); | |
} | |
$chunksize = 1*(1024*1024); | |
$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); | |
echo($buffer); | |
flush(); | |
$bytes_send += strlen($buffer); | |
} | |
fclose($file); | |
} else | |
die('Error - can not open file.'); | |
die(); | |
} | |
set_time_limit(0); | |
/*set your folder*/ | |
$file_path='uploads/'."your file"; | |
/*output must be folder/yourfile*/ | |
output_file($file_path, ''."your file".'', $row['type']); | |
/*back to index.php while downloading*/ | |
header('Location:index.php'); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment