How to Force Download File in PHP

Normally, a hyperlink can be used to open a file on the browser. In such a case, the file can download from the browser manually. If you want to download the file dynamically and save it on the local drive automatically, force the browser to download the file instead of displaying it. Force file download functionality allows the user to download files in PHP where the requested files are downloaded forcefully without rendering on the browser. In this tutorial, we are going to show how to download a file from a directory or server in PHP.

Using the header() and readfile() function, you can easily download a file in PHP. Here we’ll provide the example PHP code to force download file in PHP. Also, this simple PHP script helps to implement a download link that downloads a file from the directory. The following example script can be used to download any type of file like text, image, document, pdf, zip, etc.

Download File in PHP

<?php 
// Define file name and path
$fileName 'Brochure.pdf';
$filePath 'files/'.$fileName;

if(!empty(
$fileName) && file_exists($filePath)){
    
// Define headers
    
header("Cache-Control: public");
    
header("Content-Description: File Transfer");
    
header("Content-Disposition: attachment; filename=$fileName");
    
header("Content-Type: application/zip");
    
header("Content-Transfer-Encoding: binary");
    
    
// Read the file
    
readfile($filePath);
    exit;
}else{
    echo 
'The file does not exist.';
}

Download File Through Anchor Link

In the web application, you need to provide a hyperlink to allow the user to download files from the server dynamically. Use the below sample code to display an HTML link to download a file from the directory using PHP.
HTML Code:

<a href="download.php?file=Brochure.pdf">Download File</a>

PHP Code (download.php):

<?php 

if(!empty($_GET['file'])){
    
// Define file name and path
    
$fileName basename($_GET['file']);
    
$filePath 'files/'.$fileName;

    if(!empty(
$fileName) && file_exists($filePath)){
        
// Define headers
        
header("Cache-Control: public");
        
header("Content-Description: File Transfer");
        
header("Content-Disposition: attachment; filename=$fileName");
        
header("Content-Type: application/zip");
        
header("Content-Transfer-Encoding: binary");
        
        
// Read the file
        
readfile($filePath);
        exit;
    }else{
        echo 
'The file does not exist.';
    }
}

?>

Force Download File from Remote Server in PHP

Do you want to get implementation help, or enhance the functionality of this script? Click here to Submit Service Request

5 Comments

  1. Ranarivelo Said...
  2. Trivanho Said...
  3. Dilip Said...
  4. Amit Shee Said...
  5. Manoj Prajapati Said...

Leave a reply

keyboard_double_arrow_up