PHP Force Download

array_map

A force download script in PHP can give you more control over a file download rather than providing a direct link.

Using a force-download script, you can:

  • Validate whether a user is logged in
  • Track total number of download
<?php
function force_download( $file, $new_name="filename.doc" )
{
  $dir = "";
  if ((isset($file))&&(file_exists($dir.$file))) {
    header('Content-type: application/force-download');
    header('Content-Disposition: inline; filename="' . $dir.$file . '"');
    header('Content-Transfer-Encoding: Binary');
    header('Content-length: '.filesize($dir.$file));
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.$new_name.'"');
    readfile("$dir$file");
  } else {
    echo "No file selected";
  }
}

$file = 'myfile.doc';
$filename = "download";
$original_path = 'path/to/myfile.doc';
$file_new_name = $filename.".".end(explode(".",$original_path));
force_download($original_path,$file_new_name);
?>

You will need to validate that the file does not provide access to your code, files you do not want to download, and so on.

Leave a Reply

Your email address will not be published. Required fields are marked *