Форум программистов, компьютерный форум, киберфорум
Наши страницы
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.95/135: Рейтинг темы: голосов - 135, средняя оценка - 4.95
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
1

Принудительное скачивание любого файла

05.03.2011, 01:14. Просмотров 24913. Ответов 20
Метки нет (Все метки)

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

HTML5
1
<a href="/files/file.txt">download</a>
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2011, 01:14
Ответы с готовыми решениями:

Скачивание PDF файла и ЧПУ
Уважаемые форумчане! Помогите разобраться спроблемой. Есть сайт , написанный на чистом PHP, без...

Скачивание только определенного типа файла
Заранее извиняюсь, не нашел в какой ветке создавать тему, но вопрос в следующем: Есть фтп клиент...

Скачивание неизвестного файла вместо отображения
Всем привет! Столкнулся с такой странной ситуацией, что если открывать сайт через http -...

Запрет исполнения кода php и скачивание файла
Привет всем! что нужно прописать в htaccess что бы site.ru/1.php не сиполнялся а предлагало...

Как сделать принудительное скачивание файла?
Добрый день. Помогите пожалуйста, у меня проблема при скачивании файлов когда я на своем сайте...

20
Мигрень
21 / 21 / 2
Регистрация: 09.11.2010
Сообщений: 102
05.03.2011, 01:36 2
запакуй файл в архив
Обычно в браузере, в обработке событий, по умолчание стоит открытие тхт файла, а не его загрузки
1
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
05.03.2011, 01:44  [ТС] 3
Cпасибо, но это не подходит. Необходимо не запускать, а выдавать на скачку файл.
0
Yarosh
мусор в БД
4671 / 1124 / 34
Регистрация: 17.01.2009
Сообщений: 4,485
05.03.2011, 01:46 4
Можно, например, с именем вида: filename.txt.zip чтобы сразу было понятно что предлагается к скачиванию.
0
05.03.2011, 01:46
vasvas7775
Обитатель
311 / 311 / 42
Регистрация: 24.12.2010
Сообщений: 790
05.03.2011, 05:37 5
Цитата Сообщение от shapera Посмотреть сообщение
Cпасибо, но это не подходит. Необходимо не запускать, а выдавать на скачку файл.
может тогда сделать, чтобы при нажатии на скачивание, вылезало всплывающее окно, или лткрывалась новая страница.
А уже в них при повторном нажатии на кнопку скачать, данный файл скачивался.
0
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
05.03.2011, 09:46  [ТС] 6
Да не это всё не то.. Необходимо просто по нажанию на ссылку файла, что бы он скачался. Может я просто разделом форума ошибся? Может с js или php это реализуется?
0
vasvas7775
Обитатель
311 / 311 / 42
Регистрация: 24.12.2010
Сообщений: 790
05.03.2011, 09:53 7
тогда тебе Мигрень правильно сказал, запакуй в архив, к примеру rar, и ссылку к нему описывая путь:
HTML5
1
<a href="/files/file.rar">download</a>
При нажатии на ссылку, архив скачается.
1
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
05.03.2011, 10:29  [ТС] 8
Цитата Сообщение от shapera Посмотреть сообщение
Да не это всё не то.. Необходимо просто по нажанию на ссылку файла, что бы он скачался. Может я просто разделом форума ошибся? Может с js или php это реализуется?
Задача должна решаться именно по такому условию, архивы - не катят.
Может через js наколдавать можно что-нить? или через .thaccess ?
0
Humanoid
Почетный модератор
10109 / 3971 / 372
Регистрация: 12.06.2008
Сообщений: 11,594
05.03.2011, 10:54 9
Цитата Сообщение от shapera Посмотреть сообщение
или через .thaccess ?
Можно. Создай файл .htaccess с содержимым
Код
AddType application/file .txt
1
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
05.03.2011, 11:19  [ТС] 10
Humanoid спасибо! А как обобщить данный вами пример, скажем на весь каталог files? или на несколько каталогов?

Предположим на денвере: exapmle.ru/www/files и exapmle.ru/www/files2

Плюс, можно ли через тот-же .htaccess запретить выполнение любых файлов? А то я нашёл только php_flag_engine off, но это как я понял только для *.php файлов + не понял как каталогизировать эти команды в .htaccess
0
Vovan-VE
13177 / 6564 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
05.03.2011, 14:59 11
Цитата Сообщение от shapera Посмотреть сообщение
А как обобщить данный вами пример, скажем на весь каталог files? или на несколько каталогов?
Плюс, можно ли через тот-же .htaccess запретить выполнение любых файлов? А то я нашёл только php_flag_engine off
Примерно так, если я ничего не забыл.
Код
ForceType application/octet-stream
<FilesMatch "\.(gif|jpe?g|png)$">
    ForceType none
</FilesMatch>
Options None
# Options -ExecCGI
php_flag_engine off
2
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
05.03.2011, 15:57  [ТС] 12
Cпасибо, но не помогает!

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

Цель: Ссылки на любые файлы(любого расширения) из папки /files приводили к скачиванию файла, а не его просмотром браузером!
0
Humanoid
Почетный модератор
10109 / 3971 / 372
Регистрация: 12.06.2008
Сообщений: 11,594
05.03.2011, 16:03 13
Просто в папке /files создай файл .htaccess с содержимым
Код
ForceType application/octet-stream
1
Vovan-VE
13177 / 6564 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
05.03.2011, 16:03 14
Цитата Сообщение от shapera Посмотреть сообщение
Cпасибо, но не помогает!
Так Вы все это в .htaccess сохранили в Вашу папку files ?
Веб-сервер вообще Апач?
.htaccess использовать разрешено?
0
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
05.03.2011, 16:15  [ТС] 15
У меня денвер стоит последний, пытаюсь на нём всё обыграть, но ещё в добавок столкнулся с проблемой созданий самого .htaccess, т.к. виндоуз позволяет создать только .htaccess и приписывает сам .txt =(

Так как быть в данной ситуации?

+ Тут мысль поситила, а нельзя ли передавать пользователю требуемый файл через заголовок header(); ?
0
Vovan-VE
13177 / 6564 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
05.03.2011, 16:19 16
Цитата Сообщение от shapera Посмотреть сообщение
.htaccess, т.к. виндоуз позволяет создать только .htaccess и приписывает сам .txt =(
В крайнем случае можно через CMD или через bat'ник переименовать:
Код
ren htaccess.txt .htaccess
Цитата Сообщение от shapera Посмотреть сообщение
+ Тут мысль поситила, а нельзя ли передавать пользователю требуемый файл через заголовок header(); ?
header() - это что? функцию PHP? Если так, то плохая идея, ибо все файлы придется отдавать через PHP скрипт, а это лишняя ненужная нагрузка на сервер. Плюс придется в скрипте руками писать поддержку докачки и кеширования.
1
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
05.03.2011, 16:31  [ТС] 17
Даже так можно переформулировать задачу:

Имеется каталог /files

Внём три файла, пусть file1.txt, file2.txt и file3.txt

через example.ru/file?id=1 заголовком вытаскиваем на скачивание file1.txt
через example.ru/file?id=2 заголовком вытаскиваем на скачивание file2.txt
через example.ru/file?id=3 заголовком вытаскиваем на скачивание file3.txt

Как через заголовки это реализовать или хотя бы как заголов должен выглядеть?
0
Vovan-VE
13177 / 6564 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
05.03.2011, 16:37 18
shapera, Извините, Вы читаете то, что Вам отвечают?
0
shapera
9 / 9 / 0
Регистрация: 31.10.2010
Сообщений: 100
05.03.2011, 16:55  [ТС] 19
Цитата Сообщение от Vovan-VE Посмотреть сообщение
В крайнем случае можно через CMD или через bat'ник переименовать:


Vovan-VE спасибо Вам человеческое, что не бросили в беде! Всё получилось!

В итоге так получилось:

в директорию с файлами кинул .htaccess, в нём прописал строчку от Humanoid(т.к. мне для любых расширений необходи один и тот же результат):
ForceType application/octet-strea

Добавлено через 2 минуты
Ещё мысль проскользнула: защищает ли этот способ от запуска скриптов на сервере или надо добавлять php engine off? И если да, то как отключить остальные кроме php?

Добавлено через 13 минут
shapera, Извините, Вы читаете то, что Вам отвечают
Vovan-DE извините, нелепо вышло! Я ответил, а потом, пока вы не написали я решил дополнить свой ответ, пока печатал, вы добавили свой, и получилось глупо.
2
__PION__
958 / 799 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
08.03.2011, 12:17 20
Цитата Сообщение от Vovan-VE Посмотреть сообщение
ForceType application/octet-stream
<FilesMatch "\.(gif|jpe?g|png)$">
ForceType none
</FilesMatch>
Options None
# Options -ExecCGI
php_flag_engine off
Vovan-VE, пропустил пару строк (подсказка Денвера)

Код
ForceType application/octet-stream
<IfModule mod_charset.c>
CharsetRecodeMultipartForms off
<FilesMatch "\.(gif|jpe?g|png)$"> 
ForceType none 
</FilesMatch> 
Options None 
# Options -ExecCGI 
php_flag_engine off
</IfModule>
так работает

Добавлено через 3 минуты
правда не понимаю для чего нужны все записи после
ForceType application/octet-stream - с ним тоже все работает
2
08.03.2011, 12:17
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2011, 12:17

Принудительное перенаправление из любого поисковика на go.mail.ru
Доброго времени суток, прошу помощи в решении проблемы. После запуска .exe из интернета появилась...

Принудительное удаление файла
Здравствуйте! В своем проекте в WPF я загружаю картинку и imagesource Uri uri = new Uri(path);...

Скачивание файла WebClient с отображением процентов загрузки файла, progressBar, скоростью загрузки файла
Приветствую! Нужна Ваша помощь... Имеется такой кодик, слепленный из готовых примеров ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.