Выдача файла php скриптом

Печать RSS
90

Автор
Чатланин
0
8. dima.london, нет, файлы должны быть в том же виде, что они и есть. По второму и третему пункту: дак полный путь надо будет выдавать.

Добавлено через 02:19 сек.
И можно обойтись без дополнительных параметров в GET, а просто сессией, т.е. так, как я написал в первом посте.

Добавлено через 04:54 сек.
4. Ботаник eGo,

while (!feof($f)) { 
flush();
  if (connection_aborted()) { 
    fclose($f); 
    break; 
  } 
  echo fread($f,10000); 

  sleep(1); 
}

Так или его после нужно ставить?

Голубые штаны
0
11. -V_o_R_o_N_a-, при чем здесь полный путь? К примеру, в файле ресайда пропиши папку и подпапку, где прячешь файл, а в джет-запросе передавай только имя файла и сгенерированный код.
Сейчас поищу код как я себе сделал выдачу мп3-файлов с помощью ресайза.
Автор
Чатланин
0
12. dima.london, ок, жду.

Голубые штаны
0
Вот так выглядит у меня файл выдачи мп3-файла (mp3.php):
if(isset($_GET['file'])) {$file = $_GET['file'];} else {$file = '';}

if (preg_match('|^[a-z0-9_\.\-\/]+$|i', $file)){
    $ext = strtolower(substr($file, strrpos($file, '.') + 1));
    
    if($ext == 'mp3'){
        $filename = 'папка/подпапка/' . $file;
        $filename = file_get_contents($filename);
        header('Content-Disposition: inline; filename="' . $file . '"');
        header('Content-type: audio/mpeg');
        header('Content-Length: ' . strlen($filename));
        echo $filename;
    }
}
exit;
Ссылка на скачивание имеет 2 переменные (ид файла в базе и сгенерированный код из сессии).
Путь к загрузке лежит через простенький скрипт, где у меня идет проверка сгенерированного кода на совпадение с сессией, существование файла и запись количества скачиваний (+1).
То есть если все гут, я пишу +1 скачивание и отдаю файл:
header ('Location: mp3.php?file=имя_файла.mp3); exit;
Автор
Чатланин
0
14. dima.london, благодарю за код.

А file_get_contents и echo тоже ведь будут оперативу хавать) Файн, например в 100 МБ, а оперативы на ВДС 256)

Голубые штаны
0
Преимущества:
1) Прямой путь к файлу скрыт. Скачать по прямой ссылке невозможно.
2) В ссылке есть сгенерированный код из сессии, что создает большие трудности для скачивания файла роботом или для граба твоего контента.

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

Добавлено через 01:21 сек.
хз, не должно. Хотя, вроде как хавает.
Автор
Чатланин
0
выдача ведь тоже скриптом происходит.

ツ ツ ツ
0
11. Перед sleep напиши
14. dima.london, Загнется твой скрипт при больших файлах, да и нет возможности докачки что не мало важно
15. file_get_contents будет
С

Малиновые штаны
0
$ext = strtolower(substr($file, strrpos($file, '.') + 1)); // костыль детектед
//Good
$ext = pathinfo($file,PATHINFO_EXTENSION);
Изменил: Саня (02.03.2011 / 20:49)

Землянин
0
так проще запоминаеться))
$ext = pathinfo($file);
echo $ext['extension'];
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск