Просматривая документацию codeigniter, я использую следующий код для принудительной загрузки файлов с моего сервера.
function download($file_id){ $file = $this->uploadmodel->getById($file_id); //getting all the file details //for $file_id (all details are stored in DB) $data = file_get_contents($file->full_path); // Read the file's contents $name = $file->file_name;; force_download($name, $data); }
Код – это рабочий файл для изображений, но когда дело касается файлов PDF, оно не работает. Я не тестировал его для всех расширений файлов, но поскольку он не работает в PDF, он может не работать для других типов файлов. Любое решение?
У меня были схожие проблемы, я думаю, что проблема заключается в некоторых mime и заголовках, отправленных в браузеры. Я в конечном итоге использовал код, который я нашел здесь http://taggedzi.com/articles/display/forcing-downloads-through-codeigniter . Используйте функцию ниже вместо force_download. Он работал для меня до сих пор.
function _push_file($path, $name) { // make sure it's a file before doing anything! if(is_file($path)) { // required for IE if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); } // get the file mime type using the file extension $this->load->helper('file'); $mime = get_mime_by_extension($path); // Build the headers to push out the file properly. header('Pragma: public'); // required header('Expires: 0'); // no cache header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Last-Modified: '.gmdate ('D, d MYH:i:s', filemtime ($path)).' GMT'); header('Cache-Control: private',false); header('Content-Type: '.$mime); // Add the mime type from Code igniter. header('Content-Disposition: attachment; filename="'.basename($name).'"'); // Add the file name header('Content-Transfer-Encoding: binary'); header('Content-Length: '.filesize($path)); // provide file size header('Connection: close'); readfile($path); // push it out exit(); }
Надеюсь, поможет.
Он также работает на .pdf !!! PLZ проверить путь к файлу. это может быть проблема, я думаю. У меня тоже была эта проблема. Но когда я исправляю путь к файлу, он отлично работает … Вот как я написал код !!!
if($src == "xyyx") { $pth = file_get_contents(base_url()."path/to/the/file.pdf"); $nme = "sample_file.pdf"; force_download($nme, $pth); }
Надеюсь, это может быть полезно! Спасибо и приветствую