Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Несуществующая прямая ссылка на файл


Автор: NewDima 22.2.2009, 16:25
Долго думал, даже не получилось придумать, что в поисковике писать =)
Вопрос такой. Есть сервер для скачки файлов с него (допустим что-то типа deposit-a или т.п.). Хочу, чтобы с него можно было скачивать файлы следующим образом:
дается ссылка примерно такой формы: 
_http://www.misite.ru/files/best_icons.rar
По переходу на нее выдается страница на которой (допустим) предлагается подождать, еще что-то там. Потом появляется ссылка сюда же. Нажимаем ее и браузер предлагает сохранить файл. В общем как-то так.
Все это гипотетически, просто стало интересно, как это  делается.
Так полагаю нужно сначала в .htaccess файле добавить к интерпретируемым файлам, создать сессию, потом при следующем обращении на нашу страницу с той же сессией проверяя некоторые необходимые нам условия выдавать хеадер для настоящего файла... а дальше вообще не понимаю что должно быть. Опишите, пожалуйста, последовательность действий, не обязательно с кодом=) буду благодарен

Автор: NewDima 22.2.2009, 16:42
мда, немного неправильно тему назвал, ссылка то существует...

Автор: NewDima 22.2.2009, 18:14
ну хоть кто-нибудь, что-нибудь =)

Автор: ksnk 22.2.2009, 18:22
Можно выдавать файлы самим PHP. В случае, если требуется докачка - нужно порыскать по гуглу в поисках продвинутого скрипта. Минусы - грузится сервер, нельзя толком обслужить много параллельных закачек с докачкой...

В htaccess'е есть параметр rewritemap. Очень завлекательный, правда он довольно сложен в использовании,в основном потому,что как правило его не дают использовать в htaccess'е.  smile 

Можно добавлять правила к htaccess'у динамически. такое будет даже достаточно работоспособно, ежели ожидается не сильно большой трафик "запросов на скачку". 

Наверно, самое эффективное решение - http://ru.wikipedia.org/wiki/Жёсткая_ссылка на файл. При проверке валидности желания юзера закачать файл - формируется эта самая жесткая ссылка и выдается юзеру. Время жизни ссылки контролируется кроном. для PHP - это функция http://www.php.net/manual/en/function.symlink.php

Автор: NewDima 22.2.2009, 18:25
спасибо, разберусь, если что сюда же напишу

Добавлено через 13 минут и 18 секунд
Цитата(ksnk @ 23.2.2009,  01:22)
Можно выдавать файлы самим PHP.

Именно это как делается?

Автор: zibox86 22.2.2009, 20:13
А таблицы в базе нет всех файлов хранимых на серваке?
Можно было бы через базу сделать.

Автор: bars80080 22.2.2009, 21:09
Цитата(NewDima @  22.2.2009,  17:25 Найти цитируемый пост)
Можно выдавать файлы самим PHP.

Именно это как делается? 

ссылка на скрипт с некими параметрами, скрипт обрабатывает параметры и решает какой файл выдать. после этого он readfile(); считывает файл направляя его сразу на выход

Автор: NewDima 23.2.2009, 13:48
Цитата(bars80080 @ 23.2.2009,  04:09)
ссылка на скрипт с некими параметрами, скрипт обрабатывает параметры и решает какой файл выдать. после этого он readfile(); считывает файл направляя его сразу на выход

неужели таким образом скрипт будет выдавать весь файл? а если файл 100метров и скорость у клиента 18 кб/с?
Я не могу понять, как это делается на всяких депозитах. Я не думаю, что скрипт подождав сколько-то там секунд дает браузеру прямую ссылку, но так же не думаю, что бедный скрипт пашет в течении целого часа, пока я качаю файл. Несуразица какая-то получается... Что думаете? Или я что не так понял?

Добавлено через 1 минуту и 16 секунд
а, ksnk же сказал про жесткие ссылки, точно, тогда все понятно, спасибо, тема закрыта

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)