Enforce file download link in Drupal 7
Define the route
$items['the_file/download/%/%'] = array(
'page callback' => '_file_download',
'page arguments' => array(2, 3),
'access callback' => 'user_access',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
Menu callback
function _file_download($file_directory, $file_name) {
$file_name = urldecode($file_name) . '.pdf';
$file_directory = urldecode($file_directory);
header("Cache-Control: public");
header("Content-Type: application/octet-stream");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0");
header('Content-Disposition: attachment; filename="' . $file_name . '";');
header("Content-Transfer-Encoding: binary");
readfile($file_directory . '/' . $file_name);
drupal_exit();
}