Иногда нужно чтобы некоторые типы файлов скачивались при клике по ссылке на них, но вместо того они открываются в браузере. Такая проблема часто возникает, например, с файлами pdf, txt, html и другими.
Запретить открытие файла в браузере (чтобы он скачивался) достаточно просто — для этого нужно в файле .htaccess, который находится в папке сайта (если этого файла там нет — создайте его и откройте любым текстовым редактором) добавьте строчку:
Где вместо .txt нужно подставить расширение того файла, для которого нужно включить принудительное скачивание.
Что эта директива делает?
AddType указывает серверу, какой MIME-тип отдавать в заголовке ответа «Content-Type» при запросе посетителем файла с указанным расширением.Тип application/octet-stream — говорит браузеру что дальше будут идти данные какого-то (абсолютно не важно какого) двоичного файла, которые нужно бережно сохранить на диск. 🙂
Коротенькая справка.
Content-Type — это один из http-заголовков используемых для указания, что именно за данные передаются вслед за ним. В зависимости от того, какой mime-type получен — браузер посетителя определяет — что с получаемыми данными делать.
Так, при указании сервером вот такого заголовка:
браузер посетителя приготовится принимать картинку в формате jpeg, и после получения данных покажет её пользователю.
А при вот таком
получит и покажет самый обычный текст.
Прокомментировать Отменить комментарий
4 комментариев к “При клике по ссылке файл вместо скачивания открывается в браузере”
Случайно попал на Ваш сайт. Опыт в веб разработке у меня не большой, всего полтора года. Но ваша статья, а именно основная информация про application/octet-stream очень была полезна и помогла в решении моей проблемы. Благодарю Вас за помощь!
Некоторые браузеры, особенно после "пользовательской настройки", открывают файлы определенных форматов.
Чаще всего это изображения, медиа-файлы, .pdf, .txt и прочие.
Но что делать, если нужна ссылка именно на скачивание, а не на открытие файла?
Все предельно просто.
Для того, чтоб файл не открывался, а загружался, нужно передать ссылке на файл дополнительный атрибут — download .
HTML5:
В HTML5 это просто атрибут, без каких-либо значений:
Поддерживается большинством современных браузеров, исключения — Safari и, как всегда, IE.
HTML 4.01:
В предыдущих версиях, мог дополняться именем файла, с помощью чего можно влиять на название скачиваемого файла:
Вот так просто, можно делать ссылки на скачивание файлов.
Xakep #246. Учиться, учиться, учиться!
Современные браузеры всё чаще берут на себя лишнюю работу, открывая медиафайлы и .PDF во встроенном проигрывателе вместо того, чтобы просто сохранить их на диск. Результат может быть плачевным. Попытка открыть большой PDF в браузере может привести к сбою — браузер вылетит с ошибкой.
Браузеры становятся умнее, и это осложняет жизнь пользователям. Если раньше они щёлкали по файлу не задумываясь, то теперь рискуют встретить PDF, поэтому для страховки нажимают правой кнопкой и выбирают в меню «Сохранить как. ». Это неудобно, потому что приходится делать лишние нажатия.
К счастью, есть довольно простой способ решить эту проблему на стороне сервера, пишет шведский веб-разработчик Джонатан Сварден (Jonathan Svärdén)
Достаточно использовать команду вида:
В этом случае по нажатию левой кнопки браузер автоматически начнёт скачивание файла.
Можно даже сменить атрибуты файла, например, изменить его название.
В этом случае файл 9fd-f32ff322.pdf будет сохранён как invoice.pdf .
Некоторые пользователи могут предпочесть открытие файла в браузере, так что можно предоставить им выбор.
Естественно, это можно проделывать и с другими форматами файлов.