https://www.lexium.ru/2012/10/kak-sdelat-chtoby-fajjl-skachivalsya-a-ne-otkryvalsya/

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

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

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

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

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

Виталий
Ответ написан 1 февраля 2013 в 15:40. · Изменить грАватар

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

Ответ написан 1 февраля 2013 в 19:38. · Изменить грАватар

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

Ответ написан 13 ноября 2013 в 15:10. · Изменить грАватар

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

Ответ написан 13 ноября 2013 в 15:32. · Изменить грАватар

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

Ответ написан 16 марта 2015 в 17:29. · Изменить грАватар

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

Ответ написан 16 марта 2015 в 21:41. · Изменить грАватар

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

Следить за темой по RSS

Напишите комментарий