У меня есть система управления файлами, которую я создаю, где разрешены только zip-файлы. Я не хочу, чтобы кто-нибудь видел, где файл хранится на сервере, поэтому я использую ajax-вызов php-файла, который выполняет следующее:
if (!empty($find_url)) {
foreach ($find_url as $file) {
$dl = urldecode($file->file_url);
}
$file_headers = @get_headers($dl);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
} else {
$exists = true;
header('Content-Type: application/zip');
header("Content-Transfer-Encoding: Binary");
header('Location: '.$dl);
}
}
Файл загружается нормально, но выдает консольное сообщение, указывающее местоположение файла:
Resource interpreted as Document but transferred with MIME type application/octet-stream:
"http://www.exmple.co.uk/someplace/filename.zip".
Кажется, это нормально для chrome, когда мы пытаемся загрузить любой файл напрямую, введя его URL в браузере. Пробовал скачивать Chrome, Firefox & GitHub для окон и все они ведут себя одинаково на Chrome.
Давая ссылку для скачивания, вы можете исправить это, добавив атрибут загрузки внутри тега.
<a href="http://www.exmple.co.uk/someplace/filename.zip" download>Download File</a>
Других решений пока нет …