Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- ###############################################################
- # File Download
- ###############################################################
- # File name : download.php
- ###############################################################
- # Sample call:
- # download.php?id=$id
- #
- ###############################################################
- $id=isset($_GET['id'])?$_GET['id']:'';
- //file path
- // Download folder, i.e. folder where you keep all files for download.
- // MUST end with slash (i.e. "/" )
- define('BASE_DIR','/home/~myhost/public_html/source/file/');
- // log downloads? true/false
- define('LOG_DOWNLOADS',false);
- // log file name
- define('LOG_FILE','downloads.log');
- // Allowed extensions list in format 'extension' => 'mime type'
- // If myme type is set to empty string then script will try to detect mime type
- // itself, which would only work if you have Mimetype or Fileinfo extensions
- // installed on server.
- $allowed_ext = array (
- /*
- // archives
- 'zip' => 'application/zip',
- 'rar' => 'application/x-rar-compressed'
- // documents
- 'pdf' => 'application/pdf',
- 'doc' => 'application/msword',
- 'xls' => 'application/vnd.ms-excel',
- 'ppt' => 'application/vnd.ms-powerpoint',
- // executables
- 'exe' => 'application/octet-stream',
- */
- // images
- 'gif' => 'image/gif',
- 'png' => 'image/png',
- 'jpg' => 'image/jpeg',
- 'jpeg' => 'image/jpeg',
- /*
- // audio
- 'mp3' => 'audio/mpeg',
- 'wav' => 'audio/x-wav',
- // video
- 'mpeg' => 'video/mpeg',
- 'mpg' => 'video/mpeg',
- 'mpe' => 'video/mpeg',
- 'mov' => 'video/quicktime',
- 'avi' => 'video/x-msvideo'
- */
- );
- //database configuration
- $dbhost='localhost';
- $dbuser='root';
- $dbpassword='';
- $dbname='test';
- $sql="SELECT picture FROM t_gambar WHERE id='".$id."'";
- $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbname);
- if($result =$mysqli->query($sql)){
- $row=$result->num_rows;
- if($row){
- $data=$result->fetch_object();
- $fname=$data->picture;
- // Check if the file exists
- // Check in subfolders too
- function find_file ($dirname, $fname, &$file_path) {
- $dir = opendir($dirname);
- while ($file = readdir($dir)) {
- if (empty($file_path) && $file != '.' && $file != '..') {
- if (is_dir($dirname.'/'.$file)) {
- find_file($dirname.'/'.$file, $fname, $file_path);
- }
- else {
- if (file_exists($dirname.'/'.$fname)) {
- $file_path = $dirname.'/'.$fname;
- return;
- }
- }
- }
- }
- } // find_file
- // get full file path (including subfolders)
- $file_path = '';
- find_file(BASE_DIR, $fname, $file_path);
- if (!is_file($file_path)) {
- die("File does not exist. Make sure you specified correct file name.");
- }
- // file size in bytes
- $fsize = filesize($file_path);
- // file extension
- $fext = strtolower(substr(strrchr($fname,"."),1));
- // check if allowed extension
- if (!array_key_exists($fext, $allowed_ext)) {
- die("Not allowed file type.");
- }
- // get mime type
- if ($allowed_ext[$fext] == '') {
- $mtype = '';
- // mime type is not set, get from server settings
- if (function_exists('mime_content_type')) {
- $mtype = mime_content_type($file_path);
- }
- else if (function_exists('finfo_file')) {
- $finfo = finfo_open(FILEINFO_MIME); // return mime type
- $mtype = finfo_file($finfo, $file_path);
- finfo_close($finfo);
- }
- if ($mtype == '') {
- $mtype = "application/force-download";
- }
- }
- else {
- // get mime type defined by admin
- $mtype = $allowed_ext[$fext];
- }
- // set headers
- header("Pragma: public");
- header("Expires: 0");
- header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
- header("Cache-Control: public");
- header("Content-Description: File Transfer");
- header("Content-Type: $mtype");
- header("Content-Disposition: attachment; filename=\"$fname\"");
- header("Content-Transfer-Encoding: binary");
- header("Content-Length: " . $fsize);
- // download
- // @readfile($file_path);
- $file = @fopen($file_path,"rb");
- if ($file) {
- while(!feof($file)) {
- print(fread($file, 1024*8));
- flush();
- if (connection_status()!=0) {
- @fclose($file);
- die();
- }
- }
- @fclose($file);
- }
- // log downloads
- if (!LOG_DOWNLOADS) die();
- $f = @fopen(LOG_FILE, 'a+');
- if ($f) {
- @fputs($f, date("m.d.Y g:ia")." ".$_SERVER['REMOTE_ADDR']." ".$fname."\n");
- @fclose($f);
- }
- $query="UPDATE t_gambar SET download=download+1 WHERE id='".$id."'";
- $mysqli->query($query);
- $result->close();
- }else{
- // data not found
- }
- } else {
- // query error
- }
- $mysqli->close();
- ?>
Add Comment
Please, Sign In to add comment