В общем пишу цмс свою, хочу встроить туда файлообменник, интересуют способы, как скачивать файлы??? Не могу понять и все, при переходе на файл, они запускаются, или работают в режиме чтения, а мне надо, чтобы абсолютно любой файл скачивался! Заранее спасибо за помощь!
- 11.08.2013 02:19
- Регистрация: 25.05.2013
- Сообщений: 312
- Репутация: 32
- 11.08.2013 02:38
а как вы ожидаете что будут работать php файлы?
если я правильно понял вас, то вам нужно сделать чтобы можно было загружать и скачивать файлы с любыми расширениями, в частноcти .php
для этого вам нужно будет создать в бд табличку в которой будут все параметры файла, например:PHP код:и файл php, при обращении к которому будут отдаваться файлы на скачивание.path // путь к файлу
physical_filename // имя файла на диске, без расширения(для безопасности, чтобы теже php файлы не исполнялись, а просто лежали), например MD5 хеш f3fe33ae3202afa2b1aff9cb4d3b68c5
real_filename // реальное имя файла, например: мой файл.txt
dl_count // счетчик скаиваний
attach_comment // коментарий
extension // расширение файла, пример: txt
mimetype // пример: application/text
filesize // размер файла в байтах
filetime
например:PHP код:писал на скорую руку, но думаю принцип понятен$attach_id = $id; //id запрашиваемого файла
$result = mysql_query("SELECT * FROM files WHERE attach_id='$attach_id'");
$attachment = mysql_fetch_array ($result);
$filename = "content/".$attachment['path']."/" . $attachment['physical_filename'];
//$size = @filesize($filename);
$size = $attachment['filesize'];
header('Pragma: public');
//header("Pragma: no-cache"); // HTTP/1.0
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header('Content-Type: ' . $attachment['mimetype']);
header('Content-Disposition: attachment; ' .htmlspecialchars_decode($attachment['real_filename'].'.'.$attachment['extension']);
if ($size){ header("Content-Length: $size"); }
// обновляем счетчик скачиваний
mysql_query('UPDATE files SET dl_count = dl_count + 1 WHERE attach_id = '.$attachment['attach_id']);
пример скачивания можно посмотреть тут: _http://starnox.ru/books/mysql/razrabotka-web-prilojenii-na-php-i-mysql.html
нажми на скачать книгу - 11.08.2013 12:23
- Регистрация: 25.05.2013
- Сообщений: 312
- Репутация: 32
Спасибо, а вы бы не могли объяснить по заголовкам??? не очень пойму их!
- 11.08.2013 12:47
qwer555, вот тут пример #1 есть отличный для скачивания файла, или тут с подробными комментариями. Еще как вариант, можно в архив zip добавлять файлы, и на них давать прямую ссылку (можно и динамичную, которая существует ограниченное время).
А про дополнительную таблицу в БД - на мой взгляд, это перебор, зачем все усложнять. Путь к файлу можно хранить в таблице в новостями, а все данные о файле получать сразу в скрипте стандартными PHP функциями, которые можно посмотреть во втором примереПоследний раз редактировалось OKyJIucT; 11.08.2013 в 12:54.
Спасибо сказали:
qwer555(11.08.2013), - 11.08.2013 13:21
- Регистрация: 09.10.2011
- Сообщений: 1,813
- Репутация: 251
- 11.08.2013 14:16
qwer555,Запрети добавление php, php3,php4,php5 и других исполняемых файлов вообще лучше.
Кому надо, те в архив запихнут - 11.08.2013 15:10
- 11.08.2013 17:15
как сказал pyramida - для ограничения доступа к файлам, + у меня разделение файлов на группы есть, + возможность загрузки/скачивания разных групп файлов, для разных групп пользователей.
вообще гибкость дает, если коротко )
а так да, мона и в скрипте запроса сразу все делать. у меня просто этот файл-обработчик не только файлы обрабатывает... а вообще запросы многие..
согласен, я тоже не даю окромя архивов, аватарок и текстовых файлов ничего скачивать/закачивать.
чревато последствиями, так скажем) если не уследишь )
qwer555, я бы посоветовал тебе для начала попроще написать что нить, потом уже будешь заморачиваться с группами, ограничениями итп..
и по теме заголовков: в частности Content-Disposition: attachment; заставляет браузер сохранять файл, вместо открытия в браузере.
но он же как бы "обязывает" использовать Content-Type и Content-Length.
удачи в написании..Последний раз редактировалось cOAPerator; 11.08.2013 в 17:23.
Спасибо сказали:
qwer555(11.08.2013), - 11.08.2013 18:30
- Регистрация: 25.05.2013
- Сообщений: 312
- Репутация: 32
- 11.08.2013 21:38
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Скачать сайт. | Софт, скрипты, сервисы | 3 | 07.11.2011 21:00 |
сайты тематики скачать софт, скачать игры, для ПК и молбильного | Покупка продажа сайтов | 0 | 02.09.2011 14:39 |
скачать рэинметер | Реклама партнерских программ | 0 | 07.01.2011 10:15 |
Как скачать swf | Прочее | 2 | 28.11.2010 23:50 |
Чем скачать сайт? | Софт, скрипты, сервисы | 16 | 08.09.2009 13:46 |