Как сделать, чтобы файл скачивался, а не открывался?

На днях писал пост о том, как отключить перезагрузку после обновления Windows, и столкнулся с маленькой проблемой. Самое простое решение вопроса было в том, чтобы скачать и запустить файлик с расширением «.reg». Но оказалось, что вместо скачивания, браузер тупо открывает этот файл, как обычную страничку.

Хватит это терпеть! — решил я и быстренько исправил ошибку. Потом подумал, что наверняка и читателям было бы полезно знать, как делать, чтобы файл не открывался, а скачивался.

Собственно тут даже писать не о чем, настолько все просто. Потому, в начале, капелька теории.

cenzura

Для того, чтобы операционная система знала, что делать с файлом, ему, с давних времен (когда люди еще сидели в темном DOS’е, без мышки и прочих удобств) к названию после точки добавляли 3 буквы. Сейчас можно и больше, но в те годы было жесткое правило: не более 8-ми латинских знаков до точки, и не более 3-х после нее. Вот эти буквы в конце названия файла, после точки, и назывались расширением.

Есть расширения стандартные. Например, когда вы кликаете по файлу с расширением .gif — операционка знает, что это картинка, и вызывает соответствующую программу, которая ее открывает.

Если кликните по файлу с расширением .avi — запустится проигрыватель, и вы увидите видео. Ну и т.д.

Вот и браузер (программа, через которую вы в данный момент смотрите сайт www.lexium.ru) тоже знает и понимает некоторые расширения. Одни он открывает, другие предлагает сохранить на диске.

Но случается, что расширение ему не знакомо. Так произошло и с файлом antirebut.reg… Решение довольно простое. Сам сервер, отдавая данные, может сообщить браузеру, к какому типу запрашиваемый файл относится.

cenzura

Как это делается на практике.

1. Создаем отдельную папку, в которой будут храниться файлы на скачивание.

2. Закачиваем в нее файл .htaccess с вот такими строчками внутри (естественно, без циферок):

Options -Indexes
RewriteEngine on
RewriteBase /
options +FollowSymLinks
RewriteRule ^(.*)$ $1 [type='application/x']

.htaccess — это конфигурационный файл сервера. Строчка, которую мы в нем прописали, говорит серверу, что всё, лежащее в данной папке и всех подпапках, является файлом приложения. А раз приложение, значит браузер, при скачивании, не должен пытаться открыть файл, как текст или картинку.

3. Теперь закачиваем в эту папку любые файлы и убеждаемся, что даже html-странички из нее скачиваются, как архив или программа. У меня работает.

Как видите, проще некуда! Однако новичок может грохнуть на решение этой задачи несколько часов, поскольку не знает, с какой стороны копать.

А вы не копайте. «Велосипед» уже изобретен, так что пользуйтесь))

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

6 комментариев на «“Как сделать, чтобы файл скачивался, а не открывался?”»

  1. Рад, что пригодилось. Думаю, можно php заставить скачиваться, но придётся попрыгать с бубном. Некоторые панели управления позволяют отключать php для поддоменов. Вот самый простой вариант, утащить на него скачиваемые PHP файлы и пр. Ну или поиграться с ремувхендлером.

  2. Вот прям РЕСПЕКТ — РЕСПЕКТИЩЕ!!!! Уже который год искал простое решение (не скрипты, не плагин и т.д.) нигде нет, а здесь ЕСТЬ — автору ЛАЙК:) Прокатило для жпег, зип, пэдэф, тхт и даже для хтмл, не помогает только для PHP — их видать сама CMSка интерпретирует только как код.

  3. Спасибо. Надеюсь помогло. К сожалению попадаются сервера, где через .htaccess не получается настроить.

  4. Весь интернет облазил в поисках решения задачи, ответ нашел только здесь. Выражаю автору статьи огромную благодарность.

  5. Добавил в код пару строк. Попробуйте такой вариант.

  6. Виталий:

    Сделал как вы сказали не помогло?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *