Сохранение файла на компьютер пользователя

Еще одним немало важным моментом в работе с файлами является реализация предложения пользователю сохранить файл на компьютер. То есть при переходе по ссылке, для пользователя в браузере должно появиться окно с предложением сохранить файл. Этого не сложно добиться, задав определенные заголовки для браузера. Единственная сложность, возникающая в процессе реализации – это задать заголовки кроссбраузерно. Для всех адекватных браузеров заголовки задаются одни и те же, а вот для Internet Explorer уже совсем другие. В рецепте приведен пример сохранения картинки в формате png, для файлов в другом формате следует заменить соответствующие заголовки.
Пример:
// имя файла, с которым он будет сохранен 
$file_name = "pic.png";  
// путь до файла 
$file_path = "/images/pic.png"; 
 
// код 200, все хорошо 
header("HTTP/1.1 200 OK");  
header("Content-type: image/png"); // тип файла 
// дата по Гринвичу 
78 
 
header('Expires: ' . gmdate('D, d M Y H:i:s') .  
' GMT');  
// определяем браузер 
$ua = (isset($_SERVER['HTTP_USER_AGENT']))  
    ? $_SERVER['HTTP_USER_AGENT'] : ''; 
$isMSIE = preg_match('@MSIE ([0-9].[0-9]{1,2})@' 
, $ua); 
if ($isMSIE){ 
  // если это Internet Explorer   
  // объясняем браузеру, что выводим файл 
  header(' 
    Content-Disposition: attachment; filename="'  
. $file_name . '"' 
  );  
  header(' 
Cache-Control: must-revalidate, post-check=0 
, pre-check=0' 
); 
  header('Pragma: public'); 
}else{ 
  // если это НЕ Internet Explorer  
  // объясняем браузеру, что выводим файл 
  header(' 
    Content-Disposition: attachment;  
filename="' . $file_name . '"' 
  ); 
  header('Pragma: no-cache'); 
} 
// вывод файла в браузере 
readfile($file_path);
Теги:
header, readfile
Добавлено: 30 Марта 2018 06:30:41 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...