File download coding using PHP and Mysql | 2my4edge

07 July 2013

File download coding using PHP and Mysql

File downloading code is the method of downloading a file from the database, how to download a file from the database, usually uploaded file are stored in the database and how we can download it. let see, using PHP code we going to download the file. so here we must have to know the upload coding. here i'm not showing upload code, here i just show you and explain you the downloading code only. let see it. ZIP and download code

file download image

DOWNLOAD            LIVE DEMO

here my database field details are,

Database name --> multi
table name --> upload
column names --> id, name, type (3 columns)

the above is database structure.

DB.PHP

<?php
$conn=mysql_connect("localhost","root","") or die(mysql_error());
$db=mysql_select_db("multi",$conn);
?>


INDEX.PHP

<?php 
    include("db.php");  
    $fetc = "SELECT * FROM upload LIMIT 5";
    $result = mysql_query($fetc);
?>

<body>
<?php
while($row1=mysql_fetch_array($result))
{
    $name=$row1['name'];
    $type=$row1['type'];
    ?>
<div class="rect">
<img alt="down-icon" src="down-drop-icon.png" align="left" width="20" height="20" />
<a href="download.php?filename=<?php echo $name ;?>" >
<?php echo $name ;?></a>
</div>
<?php 
} 
?>
</body>

select * from upload table limit to show only 5 data s. and the variable $result is fetched as array in while and echo the file name. for that file name we are giving the download link, that is from download.php.

DOWNLOAD.PHP

<?php
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";
     };
 };
 
 //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');
 
 // 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);
        echo($buffer); 
        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='files/'.$_REQUEST['filename'];


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

look at the highlighted part in the above coding. from the folder name files the files are already stored and we are retrieving that.

types as store in Database

    "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 the file name is extended with above all extensions. the type stored in database must by like that the above. that is important.

enjoy with demo. meet you at next tutorial.




RELATED POSTS:

Export the MySQL database table as CSV format using PHP

Marquee style in different manner with PHP and MySql

Simple Login logout system using php

Username live availability Check using php and Ajax

Comment System using PHP and MySql

Create Database with MySql and INSERT coding in php

187 comments:

  1. Thank you the download coding so useful my game website

    ReplyDelete
  2. $name = rawurldecode($name); pls explain this line...

    ReplyDelete
  3. Decode the url, passing with the variable name

    ReplyDelete
  4. Thanks! Can I Limit A Download File?

    ReplyDelete
  5. Thanks for the download coding .This is very helpful for php develops

    ReplyDelete
  6. bro thanks for the code but a major problem..... file is downloading but after download the file is showing corrupted.... i have changed the
    output_file($file_path, ''.$_REQUEST['filename'].'', 'text/plain');

    to

    output_file($file_path, ''.$_REQUEST['filename'].'', 'application/pdf');

    to download only pdf .....
    can u help me fast please....
    thanks in advance.... :)

    ReplyDelete
    Replies
    1. use this to all type file...

      output_file($file_path, ''.$_REQUEST['filename'].'', 'text/plain');

      Delete
    2. how to download pdf from image folder in php and mysql

      Delete
  7. lanaat ho kisi kaam ka nhe bc

    ReplyDelete
  8. thank you sir this is very helpfully

    ReplyDelete
  9. it is very helpfull codings thank you

    ReplyDelete
  10. thank you for your code. you can also try our file upload and download system.

    http://webgeekresources.com/projects/33-web-based-file-management-system

    ReplyDelete
  11. hi everyone!
    parameters $file and $name in function output_file() transmission from where?
    can u help me fast please....
    thanks everyone.

    ReplyDelete
  12. rawurldecode — Decode URL-encoded strings
    string rawurldecode ( string $str )
    Returns a string in which the sequences with percent (%) signs followed by two hex digits have been replaced with literal characters.
    str--- The URL to be decoded.
    Returns the decoded URL, as a string

    ReplyDelete
  13. how can i upload files using that same codes?

    ReplyDelete
  14. thanks for this code

    ReplyDelete
  15. really helpful script ....
    thanx for sharing....

    ReplyDelete
  16. Amazing work keep doing
    Thanks for the code

    ReplyDelete
  17. Amazing work keep doing
    Thanks for the code

    ReplyDelete
  18. hello everyone...
    how can i insert or select togather img and text and echo same div and if i wanna only text then echo only text and if only img then only img echo ?
    so please any idea

    ReplyDelete
  19. This code is very helpfull for php developer.

    ReplyDelete
  20. yeah this awsome tutorial...
    thanks master

    ReplyDelete
  21. I wan to download audio file ?? how to edit this code for audio file??Pls help

    ReplyDelete
  22. Much Respect to you.Thanks so much for usefull code

    ReplyDelete
  23. can i use this code on wordpress site

    ReplyDelete
  24. I want to check the file name before uploading. The concept is first am downloading a data as a excel / csv file and then i edit the file and upload it, but what is the problem means i have to restrict the file same that menas the file name should be same as my downloaded file name.so if change name of the file the system won't take it.please help me

    ReplyDelete
  25. $name = rawurldecode($name); pls explain this line..
    way use the $file..

    ReplyDelete
  26. Nice posting. Really helps
    What if I have multiple file extension. suppose like word ,excel, etc. what would be the option in that case in following section:

    output_file($file_path, ''.$_REQUEST['filename'].'', 'text/plain');

    Please explain.

    ReplyDelete
  27. thanks , helpfull...but can you tell me how can we upload all files all at a time.

    ReplyDelete
  28. Thank you very much..but can you help me how can we download multiple files/all files all at a time..Thanks in advance

    ReplyDelete
  29. I want to download the data in PDF format from database table.
    but its giving error (Notice: Undefined variable: row in C:\xampp\htdocs\pdf\generate-pdf-from-mysql-data-using-fpdf\index.php on line 12

    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\pdf\generate-pdf-from-mysql-data-using-fpdf\index.php on line 12
    FPDF error: Some data has already been output, can't send PDF file)


    I used the following code.
    runQuery("SELECT * FROM toy");
    $header = $db_handle->runQuery("SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='blog_samples' AND `TABLE_NAME`='toy'");

    require('fpdf/fpdf.php');
    $pdf = new FPDF();
    $pdf->AddPage();

    $pdf->SetFont('Arial','B',12);
    foreach($row as $rowValue) {
    $data=explode(';',$rowValue);
    foreach($data as $columnValue)
    $pdf->Cell(90,12,$columnValue,1);
    $pdf->SetFont('Arial','',12);
    $pdf->Ln();
    }
    $pdf->Output();
    ?>

    plz help me.
    regards:
    neeraj kumar
    neerajkmr277@gmail.com

    ReplyDelete
  30. I want to download the data in PDF format from database table.
    but its giving error (Notice: Undefined variable: row in C:\xampp\htdocs\pdf\generate-pdf-from-mysql-data-using-fpdf\index.php on line 12

    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\pdf\generate-pdf-from-mysql-data-using-fpdf\index.php on line 12
    FPDF error: Some data has already been output, can't send PDF file)


    I used the following code.
    runQuery("SELECT * FROM toy");
    $header = $db_handle->runQuery("SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='blog_samples' AND `TABLE_NAME`='toy'");

    require('fpdf/fpdf.php');
    $pdf = new FPDF();
    $pdf->AddPage();

    $pdf->SetFont('Arial','B',12);
    foreach($row as $rowValue) {
    $data=explode(';',$rowValue);
    foreach($data as $columnValue)
    $pdf->Cell(90,12,$columnValue,1);
    $pdf->SetFont('Arial','',12);
    $pdf->Ln();
    }
    $pdf->Output();
    ?>

    plz help me.
    regards:
    neeraj kumar
    neerajkmr277@gmail.com

    ReplyDelete
  31. Great article and tips. which one is the best php editor for all coding use please tell..

    ReplyDelete
  32. Great article and tips. which one is the best php editor for all coding use please tell..

    ReplyDelete
  33. I want users to download Pdf CV when they click this button, I need Php code.

    ReplyDelete
  34. I have one query. I want download multiple file, in single click. I used for loop coiling function, It's not working. How can I do this.

    ReplyDelete
  35. If i want to download movie and video then what to do and I want to build a webpage like youtube or mp3 songs and video then what to do plźzzzzzzz suggest me very soon

    ReplyDelete
  36. the file that is downloaded is corrupted, how to resolve that issue?

    ReplyDelete
  37. the file that is downloaded is corrupted, how to resolve that issue?

    ReplyDelete
  38. helpful code

    ReplyDelete
  39. can you solve this problam
    output_file($file_path, ''.$_REQUEST['filename'].'', 'text/plain');
    image dos't download only plain text download

    ReplyDelete
  40. hello samoe one to help when i try to ran my code it generates that error...
    Warning: fopen(upload/) [function.fopen]: failed to open stream: No error in C:\wamp\www\final\download3.php on line 78
    Error - can not open file.
    this is line 78...."if ($file = fopen($file, 'r'))

    {"

    ReplyDelete
  41. Can user upload files online. and can one use pagination with this code?

    ReplyDelete
  42. Hello

    Can you please tell me that multiple video download is possible on one click in php.

    ReplyDelete
  43. how about 3gp?

    ReplyDelete
  44. I hope thi8s code will work. Thanks in advance

    ReplyDelete
  45. from the database columns what is datatype of type column ..??

    ReplyDelete
  46. respected sir i want to same code in bootstrap so please provide me same code

    ReplyDelete
  47. File not found or inaccessible! ...can you plz help me

    ReplyDelete
  48. Bro i have use to iframe then how to hide the inspect-element right click

    ReplyDelete
  49. Nice blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it.
    No.1 Dot Net Project Center in Chennai | No.1 Dot Net Project Center in Velachery

    ReplyDelete
  50. Thanks for giving great kind of information. So useful and practical for me. Thanks for your excellent blog, nice work keep it up thanks for sharing the knowledge. digital marketing company in delhi

    ReplyDelete
  51. Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging…
    C & C++ Training Institute in Chennai | C & C++ Training in Velachery | Online Training Center in Velachery

    ReplyDelete
  52. Excellent post. Thanks for sharing your amazing blog with informative information. keep updating such a wonderful blog with us..
    Python Training Institute in Chennai | Python Training Center in Velachery | Python Online Courses in Velachery

    ReplyDelete
  53. I feel very happy to read your post with informative post and useful content. Thanks a lot for sharing this wonderful post..
    AWS Training Institute in Chennai | AWS Training Center in Velachery | AWS Online Courses in Velachery

    ReplyDelete
  54. Awesome Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging…
    CCNP Training Institute in Chennai | CCNP Training Center in Velachery | CCNP Online Training in Velachery | CCNP Courses in Chennai

    ReplyDelete
  55. Nice Post! Thank you so much for sharing this pretty post, it was so good to read and useful for everyone. keep updating..
    AWS Training Institute in Chennai | AWS Training Center in Velachery | AWS Online Courses in Velachery | Online Certification Training in Velachery

    ReplyDelete
  56. Excellent article. Its really very amazing content and informative blog. Thanks for sharing such a nice post with us..
    CCNA Training Institute in Chennai | CCNA Training Center in Velachery | CCNA Courses in Velachery | Online Training Center in Chennai

    ReplyDelete
  57. Thanks for Sharing the valuable information and thanks for sharing the wonderful article.. We are glad to see such a wonderful article..
    MCSE Training with placement in Chennai at ATS | Excellent MCSE Training Institute in Velachery | MCSE Training Center in Velachery | MCSE Courses in Chennai | Online Training in Velachery

    ReplyDelete
  58. Impressive blog with lovely information. Its really very useful article for us thanks for sharing such a amazing blog...
    Web Design Training Institute in Chennai | Web Design Training & Development in Velachery | Web Design Courses in Velachery | Online Training Center in Chennai

    ReplyDelete
  59. Wow!!!..Superb Blog, its very informative content with useful information. Thanks for sharing your amazing post..
    MBA Project Center in Chennai | MBA Project Center in Velachery | MBA Projects in Velachery | Online MBA Projects in Chennai

    ReplyDelete
  60. I feel really happy to have seen your webpage and look forward to so many more entertaining times reading here. Thanks once more for all the details.
    Final Year project Center in Chennai | Final Year Projects in Velachery | Final year projects in Chennai & Velachery | Online projects in Velachery

    ReplyDelete
  61. Nice Post! Thank you so much for sharing this pretty post, it was so good to read and useful content you have shared here. keep updating..
    Software Testing Training Institute in Chennai | Software Testing Training in Velachery | Online Software Testing Training in Velachery

    ReplyDelete
  62. Really Very nice blog, its very informative informative you are shared and useful for us. Thanks for sharing such a awesome post..
    PCB Designing Training Institute in Chennai | PCB Design Courses in Velachery | PCB Design Training Center in Velachery | Online PCB Courses in Velachery

    ReplyDelete
  63. Superb blog..Its very amazing to read and informative content with useful information. Thanks for posting such a wonderful post..
    PMP Certification Exams in Chennai | PMP Exam Center in Chennai | PMP Certification Exam Center in Velachery | PMP Exams in Velachery | PMP Exam Center in Perungudi | PMP Certification in Taramani

    ReplyDelete
  64. Thank you for explaining in step by step.so i was gather more information in your blog.keep in blogging.Thank you for sharing..
    C & C++ Training Institution in Chennai | C & C++ Training Center in Velachery | C & C++ Training in Velachery | C & C++ Training Institute in Taramani | C & C++ Courses in Velachery

    ReplyDelete
  65. Wow... Its really very awesome article to read and useful for everyone.Thanks for sharing such a wonderful post with us..
    PCB Design Training Institute in Chennai | PCB Design Courses in Chennai | PCB Design Training in Velachery | Online Training Institutes in Velachery

    ReplyDelete
  66. Excellent content with useful information. I am looking forward for your future posts. Keep up the Good work.
    PMP Certification in Velachery |
    PMP Certification in Chennai |
    PMP Certification in Taramani
    PMP Certification in Medavakkam

    ReplyDelete
  67. Excellent Blog!....Thank you for sharing your valuable information with us .Its really amazing to read your content.
    PMP Exam Center in Chennai | PMP Exams in Velachery | PMP Exam Center in Velachery | Online PMP Exams in Velachery

    ReplyDelete
  68. Excellent Post…It is amazing and wonderful to visit your site.. Thanks for sharing this valuable information to our vision.
    Linux Training in Velachery |
    Linux Training in Chennai |
    Linux Training in Taramani|
    Linux Training in Medavakkam

    ReplyDelete
  69. Nice blog. You put Good stuff. All the topics were explained briefly. So easily understand for me. I am waiting for your next awesome blog. Thanks for sharing.
    MCSA Training in Velachery |
    MCSA Training in Chennai |
    MCSA Training in Taramani|
    MCSA Training in Medavakkam

    ReplyDelete
  70. Great Post… Really your writing style is too good, it is very helpful for all and I never get bored while reading your article because, it more interesting to moves on. Thanks for sharing
    Computer Courses Training in Velachery |
    Computer Courses Training in Chennai |
    Computer Courses Training in Medavakkam |
    Computer Courses Training in Porur

    ReplyDelete
  71. Really amazing informative blog. Excellent blog with unique content. It is very useful for us. Thanks for sharing such a wonderful blog.


    AWS Training Institute in Velachery |
    AWS Training Institute in Chennai |
    AWS Training Institute in Medavakkam |
    AWS Training Institute in Taramani|
    AWS Training Institute in Porur

    ReplyDelete
  72. Very good information.its very informative article and useful for everyone.. Thanks for sharing such a nice post..
    TOEFL Test Center in Chennai |
    TOEFL Test Center in velachery |
    TOEFL Test in Chennai |
    TOEFL Exam Center in Chennai |
    TOEFL Certification Exams in Velachery

    ReplyDelete
  73. I really enjoyed while reading your article and it is good to know the latest updates. Do post more. keep updating..
    GMAT Test Center in Chennai | GMAT Test Center in Velachery | GMAT Test in Velachery

    ReplyDelete
  74. The information you have here is really useful to make my knowledge good. It is truly supportive for us and I have accumulated some essential data from this blog.
    PMP Certification in Chennai|
    PMP Certification in Velachery|
    PMP Certification in Tharmani|
    PMP Certification in Thambaram|
    PMP Certification in perungudi|

    ReplyDelete
  75. Thank you so much for sharing such an information information with us.. keep updating your knowledgeable information..
    PCB Design Training Institute in Chennai | PCB Training in Velachery | PCB Courses in Chennai | PCB Design in Chennai

    ReplyDelete
  76. Wow!.. Superb blog, its really an amazing content with useful information. Thanks for posting..

    Embedded Training Institute in Chennai | Embedded Training in Velachery | Embedded Courses in Velachery

    ReplyDelete
  77. Informative and Impressive information you have shared. keep updating such an nice blog..
    PMP Certification in Chennai | PMP Exam Center in Velachery | PMP Exams in Velachery

    ReplyDelete

^