Вместо скачивания файла открывается страница

Иногда нужно чтобы некоторые типы файлов скачивались при клике по ссылке на них, но вместо того они открываются в браузере. Такая проблема часто возникает, например, с файлами 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 .

Некоторые пользователи могут предпочесть открытие файла в браузере, так что можно предоставить им выбор.

Естественно, это можно проделывать и с другими форматами файлов.

Оцените статью
Добавить комментарий