Я использую обычный 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')
Я пробовал следующее безрезультатно:
в файле .htaccess:
<FilesMatch "\.(?i:doc)$"> ForceType application/octet-stream Header set Content-Disposition attachment </FilesMatch>
в файле .htaccess:
AddType application/octet-stream .doc
в скрипте PHP:
header('Content-Type: application/force-download');
Добавьте это в свои заголовки:
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 …
Надеюсь это поможет 🙂