[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Временная ссылка
fortuna
Я уже как то поднимал на этом форуме , как сделать временную ссылку на скачивание , не давая полного пути к файлу .
Может дадите ссылки ? а то куда то дел .
waldicom
Вот тут есть пару способов: http://habrahabr.ru/post/151795/

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
fortuna
waldicom
Ага , вот оно то что нужно , я как раз эту ссылку и потерял .
fortuna
Почитал , интересует как реализовать времменую ссылку ? don.php?file=asdsadsad
Вот такой вид , чтобы не давать качать на прямую в обход.
SlavaFr
Как не давать качать на прямую, ты должен уже понять из данной статьи.
Остается только проблема чтоб ссылка была временая.
Предпологаю, что нужно гдето (например в таблице) держать настоящее url файла, hash который должен быть передан в запросе ( в твоем примере"asdsadsad") , а также время с которого ссылка будет не действительна.
Или у тебя другие планы?


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
EvilDev
Если правильно понял тему, то может посмотреть в сторону nginx? Что то такое там точно было

_____________
HTML5, CSS3, jQuery, Node.js, PHP, Yii, Joomla, MySQL, MongoDb, GIMP
fortuna
SlavaFr
Ссылка имеет такой вид
сайт.file/321/
делаю запрос по 321 и вытаскиваю url и hash , вот по этому отдавать .
function file_force_download($file) {
if (file_exists($file)) {
// сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
// если этого не сделать файл будет читаться в память полностью!

if (ob_get_level()) {
ob_end_clean();
}
// заставляем браузер показать окно сохранения файла
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
// читаем файл и отправляем его пользователю
readfile($file);
exit;
}
}

Я же браузеру скажу откуда качать ? или я не правильно понял ?
путь такой /2013/2/test.rar
SlavaFr
Цитата (fortuna @ 27.02.2013 - 09:20)
Я же браузеру скажу откуда качать ? или я не правильно понял ?

нет, ты говориш браузеру только url, а твой скрипт анализируя параметры решает должен ли он чтото вообще давать для download.
Если download разрешен, то посылать файл о настоящем местонохождении и имени которого клиент не имеет и не должен имепть понятия

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
fortuna
Я сейчас собрал у себя конструктор , сократил до этого .
file_force_download("http://localhost/dow/2013/zz.rar");

Но он не качает .. или я что-то не довкурил ?
fortuna
Вот такой собрал сейчас .
header("Content-type: text/html; charset='utf-8'");

$file = $_GET['file'];
$hash = $_GET['hash'];


$decoder = base64_decode($hash);
$files = $decoder.$file;

function file_force_download($file) {
if (file_exists($file)) {
// сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
// если этого не сделать файл будет читаться в память полностью!

if (ob_get_level()) {
ob_end_clean();
}
// заставляем браузер показать окно сохранения файла
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
// читаем файл и отправляем его пользователю
readfile($file);
exit;
}
}


file_force_download("http://localhost/dow/2013/zz.rar");

<a href='http://localhost/dow/file.php?file=zz.rar&hash=aHR0cDovL2xvY2FsaG9zdC9kb3cvMjAxMy8='>Скачать</a>

Я понял что-то не правильно сделал , а вот что ? куда URL записать ?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.