Intereting Posts
Простой кросс-браузер, загрузка файла jQuery / PHP с индикатором выполнения Не удалось подключиться к почтовому серверу в порту «localhost» 25 Как написать задание Cron для выполнения простого скрипта php? Преобразование даты PHP в формат даты javascript Как передать массив в highchart ?? Запрос Curl, показывающий различный контент по сравнению с запросом браузера Как найти файл php.ini (xampp) Не удается выполнить итерацию через объект в Ubuntu PHP 5.2.10-2 Работает на PHP 5.2.10? Как попасть в результаты поиска в течение нескольких минут? Удалите пустые элементы массива с помощью array_filter с функцией обратного вызова Неустранимая ошибка: вызов неопределенной функции mysqli_connect () в … при подключении PHP 5.4.22 и MySQL 5.5 с Apache 2.4.7 Как продемонстрировать эксплойт extract ($ _ POST)? добавление верхнего и нижнего колонтитула к контроллеру исключить атрибуты html в str_replace 0x80040400: QuickBooks обнаружил ошибку при анализе предоставленного текстового потока XML

Заголовок Контент не работает

Я делаю загрузку файла с его переименованием. Все работает, кроме размера. Я не могу установить размер файла с помощью

header('Content-Length: '); 

даже я настраиваю его на

 header('Content-Length: 15444544545'); 

это не работает. Я использую PHP codeigniter framework, где проблема?

EDIT: больше кода:

 $file_data = array( 'originalName' => $post_info['file_info'][0]['original_name'], 'fakeName' => $post_info['file_info'][0]['file_name'], 'modificationId' => $post_info['file_info'][0]['modification_article_id'], 'extension' => end(explode('.', $post_info['file_info'][0]['original_name'])), 'name' => str_replace(".".end(explode('.', $post_info['file_info'][0]['original_name'])), "", $post_info['file_info'][0]['original_name']), 'filesize' => filesize($post_info['file_info'][0]['file_name']) ); header('Cache-Control: public'); header('Content-Description: File Transfer'); header('Content-Disposition: attachment; filename=' . $file_data['name'] . '.' . $file_data['extension']); header('Content-Length: ' . filesize(base_url().$file_data['fakeName'])); // Read file readfile(base_url().$file_data['fakeName']); //print_r($file_data); echo "<script>window.close();</script>"; 

EDIT: решение

возникла проблема с сервером

Вы можете попробовать следующее:

 $mm_type="application/octet-stream"; header("Cache-Control: public, must-revalidate"); header("Pragma: hack"); header("Content-Type: " . $mm_type); header("Content-Length: " .(string)(filesize($fullpath)) ); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Transfer-Encoding: binary\n"); readfile($fullpath); 

неправильное использование base_url() .

где хранится ваш файл?

возможно, вы можете попробовать постоянный FCPATH вместо функции вызова base_url()

и у вас есть размер файла, хранящийся в $file_data['filesize']

наконец, не должно быть строки echo "<script>window.close();</script>"; в вашем php-скрипте при выводе содержимого файла.

Вы пробовали с download_helper ?? Sintax: force_download($filename, $data) . Также в вашем коде вы читаете файл по URL-адресу. Вместо этого используйте путь к файловой системе. Из действия контроллера:

 <?php public function download() { //Your code here... $filePath = realpath(FCPATH.DIRECTORY_SEPARATOR.'uploads/myfile.pdf'); //FakeName???? force_download($file_data['fakeName'], readfile($filePath)); } 

Если мое решение не работает, дайте мне возможность дать вам другой путь.

Примечание . FCPATH – это путь переднего контроллера, FCPATH папка сервера, например (/ var / www / CodeIgniter). Другие константы пути уже определены на index.php (фронт-контроллер).

Будет $file_data['fakeName'] отпечаток $file_data['fakeName'] .

Если ваша версия CodeIgniter не имеет download_helper, сделайте свой собственный … обратитесь к документам CI для полного объяснения. Существует код функции force_download:

 function force_download($filename = '', $data = '') { if ($filename == '' OR $data == '') { return FALSE; } // Try to determine if the filename includes a file extension. // We need it in order to set the MIME type if (FALSE === strpos($filename, '.')) { return FALSE; } // Grab the file extension $x = explode('.', $filename); $extension = end($x); // Load the mime types if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes.php')) { include(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'); } elseif (is_file(APPPATH.'config/mimes.php')) { include(APPPATH.'config/mimes.php'); } // Set a default mime if we can't find it if ( ! isset($mimes[$extension])) { $mime = 'application/octet-stream'; } else { $mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension]; } // Generate the server headers if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE) { header('Content-Type: "'.$mime.'"'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Transfer-Encoding: binary"); header('Pragma: public'); header("Content-Length: ".strlen($data)); } else { header('Content-Type: "'.$mime.'"'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Transfer-Encoding: binary"); header('Expires: 0'); header('Pragma: no-cache'); header("Content-Length: ".strlen($data)); } exit($data); } в function force_download($filename = '', $data = '') { if ($filename == '' OR $data == '') { return FALSE; } // Try to determine if the filename includes a file extension. // We need it in order to set the MIME type if (FALSE === strpos($filename, '.')) { return FALSE; } // Grab the file extension $x = explode('.', $filename); $extension = end($x); // Load the mime types if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes.php')) { include(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'); } elseif (is_file(APPPATH.'config/mimes.php')) { include(APPPATH.'config/mimes.php'); } // Set a default mime if we can't find it if ( ! isset($mimes[$extension])) { $mime = 'application/octet-stream'; } else { $mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension]; } // Generate the server headers if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE) { header('Content-Type: "'.$mime.'"'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Transfer-Encoding: binary"); header('Pragma: public'); header("Content-Length: ".strlen($data)); } else { header('Content-Type: "'.$mime.'"'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Transfer-Encoding: binary"); header('Expires: 0'); header('Pragma: no-cache'); header("Content-Length: ".strlen($data)); } exit($data); }