Использовать браузеры для загрузки файла, а не открытия

Я использую обычный PHP-код для загрузки документов:

header('Content-Type: ' . $mimeTypes[$fileext]); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Transfer-Encoding: binary'); header('Accept-Ranges: bytes'); header('Cache-Control: private'); header('Pragma: private'); readfile($filepath); 

Все работает нормально – открывается диалоговое окно загрузки / сохранения, за исключением файлов .doc, которые пытаются открыть на docs.google.com, но они не работают из-за отсутствия разрешения – это потому, что я обслуживаю файлы вне корневого сайта.

Итак, как мне обойти docs.google и заставить каждый браузер предлагать диалог save-as независимо от типа файла mime? ('doc' => 'application/msword')

Я пробовал следующее безрезультатно:

  1. в файле .htaccess:

     <FilesMatch "\.(?i:doc)$"> ForceType application/octet-stream Header set Content-Disposition attachment </FilesMatch> 
  2. в файле .htaccess:

     AddType application/octet-stream .doc 
  3. в скрипте PHP:

     header('Content-Type: application/force-download'); 

Related of "Использовать браузеры для загрузки файла, а не открытия"

Добавьте это в свои заголовки:

 header("Content-type: application/force-download"); 

Следующий php работал для меня

 header("Cache-Control: private"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=".$file.""); header("Content-Transfer-Encoding: binary"); header("Content-Type: binary/octet-stream"); readfile ($link); 

PS – Я использовал расширение $file только в переменной $file , поэтому не нужно упоминать тип mime

Надеюсь это поможет 🙂