Выдача файла php скриптом - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - Visavi.net
https://visavi.net/
[email protected] (admin)[email protected] (admin)Mon, 13 Jan 2025 22:31:09 +030021. <strong>dima.london</strong>, Ну дык там же sleep стоит и отдается кусками по 10кб в сек, поменяй скорость и выдавай кусками по больше + если тестил на денвере flush там до балалайки
https://visavi.net/topics/19287/327590
Выдача файла php скриптом LugaroThu, 03 Mar 2011 15:30:24 +0300Сообщенияhttps://visavi.net/topics/19287/32759022. <strong>Ботаник eGo</strong>, само сабой так элегантнее. <br>
Я просто надеюсь на твою помощь. Все-таки и я решил добавить докачку, но явно что-то делаю не так.....
https://visavi.net/topics/19287/327572
Выдача файла php скриптом ДмитрийThu, 03 Mar 2011 14:52:18 +0300Сообщенияhttps://visavi.net/topics/19287/327572dima.london, я даже не представляю как допустим твой file_get_contents() выдаст файл в 500++ мб.<br>
да и не думаю что file_get_contents() быстрее fread например.<br>
без докачки очень худо будет тоже<br>
P.S: <pre class="prettyprint"><?
if(isset($_GET['file'])) {$file = $_GET['file'];} else {$file = '';}
# а ведь так элегантней:
$file = (isset($_GET['file'])) ? $_GET['file'] : '';
?></pre>
https://visavi.net/topics/19287/327567
Выдача файла php скриптом KOZZThu, 03 Mar 2011 14:40:47 +0300Сообщенияhttps://visavi.net/topics/19287/327567<strong>.::lugaro::., Ботаник eGo, </strong> вариант из 4 поста работает в 2-3 раза дольше, даже при использовании flush(). К тому же не поддерживает потоковое воспроизведение файла. <br>
Возможно, я что-то не так делаю. Из того кода я только изменил директории на свои, добавил flush() (что само собой существенно ускорило отдачу файла) и изменит MIME тип файла на audio/mpeg (так как использую для обработки мп3-файла. <br>
<br>
Все равно, скорость на порядок ниже той, если просто выдавать файл как я описал в моем варианте).
https://visavi.net/topics/19287/327563
Выдача файла php скриптом ДмитрийThu, 03 Mar 2011 14:23:52 +0300Сообщенияhttps://visavi.net/topics/19287/327563так проще запоминаеться))<br>
$ext = pathinfo($file);<br>
echo $ext['extension'];
https://visavi.net/topics/19287/327361
Выдача файла php скриптом Сааааа-нёёёёё-кWed, 02 Mar 2011 20:53:32 +0300Сообщенияhttps://visavi.net/topics/19287/327361$ext = strtolower(substr($file, strrpos($file, '.') + 1)); // костыль детектед<br>
//Good<br>
$ext = pathinfo($file,PATHINFO_EXTENSION);
https://visavi.net/topics/19287/327359
Выдача файла php скриптом СаняWed, 02 Mar 2011 20:48:59 +0300Сообщенияhttps://visavi.net/topics/19287/32735911. Перед sleep напиши <br>
14. <strong>dima.london</strong>, Загнется твой скрипт при больших файлах, да и нет возможности докачки что не мало важно<br>
15. file_get_contents будет
https://visavi.net/topics/19287/327347
Выдача файла php скриптом LugaroWed, 02 Mar 2011 19:42:28 +0300Сообщенияhttps://visavi.net/topics/19287/327347выдача ведь тоже скриптом происходит.
https://visavi.net/topics/19287/327297
Выдача файла php скриптом CROWSWed, 02 Mar 2011 17:55:53 +0300Сообщенияhttps://visavi.net/topics/19287/327297Преимущества:<br>
1) Прямой путь к файлу скрыт. Скачать по прямой ссылке невозможно.<br>
2) В ссылке есть сгенерированный код из сессии, что создает большие трудности для скачивания файла роботом или для граба твоего контента.<br>
<br>
Ну, для себя, для пущей безопасности и накрутки количества скачиваний роботами, для гостей я добавил еще и каптчу.<br>
<br>
<em><span style="font-size:x-small">Добавлено через 01:21 сек.</span></em><br>
хз, не должно. Хотя, вроде как хавает.
https://visavi.net/topics/19287/327293
Выдача файла php скриптом ДмитрийWed, 02 Mar 2011 17:49:51 +0300Сообщенияhttps://visavi.net/topics/19287/32729314. <strong>dima.london</strong>, благодарю за код.<br>
<br>
А file_get_contents и echo тоже ведь будут оперативу хавать) Файн, например в 100 МБ, а оперативы на ВДС 256)
https://visavi.net/topics/19287/327291
Выдача файла php скриптом CROWSWed, 02 Mar 2011 17:49:05 +0300Сообщенияhttps://visavi.net/topics/19287/327291Вот так выглядит у меня файл выдачи мп3-файла (mp3.php):<br>
<pre class="prettyprint">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;</pre>
Ссылка на скачивание имеет 2 переменные (ид файла в базе и сгенерированный код из сессии).<br>
Путь к загрузке лежит через простенький скрипт, где у меня идет проверка сгенерированного кода на совпадение с сессией, существование файла и запись количества скачиваний (+1). <br>
То есть если все гут, я пишу +1 скачивание и отдаю файл:<br>
<pre class="prettyprint">header ('Location: mp3.php?file=имя_файла.mp3); exit;</pre>
https://visavi.net/topics/19287/327288
Выдача файла php скриптом ДмитрийWed, 02 Mar 2011 17:45:39 +0300Сообщенияhttps://visavi.net/topics/19287/32728812. <strong>dima.london</strong>, ок, жду.
https://visavi.net/topics/19287/327282
Выдача файла php скриптом CROWSWed, 02 Mar 2011 17:39:23 +0300Сообщенияhttps://visavi.net/topics/19287/32728211. <strong>-V_o_R_o_N_a-</strong>, при чем здесь полный путь? К примеру, в файле ресайда пропиши папку и подпапку, где прячешь файл, а в джет-запросе передавай только имя файла и сгенерированный код. <br>
Сейчас поищу код как я себе сделал выдачу мп3-файлов с помощью ресайза.
https://visavi.net/topics/19287/327277
Выдача файла php скриптом ДмитрийWed, 02 Mar 2011 17:36:47 +0300Сообщенияhttps://visavi.net/topics/19287/3272778. <strong>dima.london</strong>, нет, файлы должны быть в том же виде, что они и есть. По второму и третему пункту: дак полный путь надо будет выдавать.<br>
<br>
<em><span style="font-size:x-small">Добавлено через 02:19 сек.</span></em><br>
И можно обойтись без дополнительных параметров в GET, а просто сессией, т.е. так, как я написал в первом посте.<br>
<br>
<em><span style="font-size:x-small">Добавлено через 04:54 сек.</span></em><br>
4. <strong>Ботаник eGo</strong>, <br>
<br>
<pre class="prettyprint">
while (!feof($f)) {
flush();
if (connection_aborted()) {
fclose($f);
break;
}
echo fread($f,10000);
sleep(1);
}
</pre>
<br>
Так или его после нужно ставить?
https://visavi.net/topics/19287/327269
Выдача файла php скриптом CROWSWed, 02 Mar 2011 17:29:15 +0300Сообщенияhttps://visavi.net/topics/19287/327269о том как отдать различные расширения файлов с помощья ресайза, читай тут: <a href="http://www.ipm.kstu.ru/it/lec/7.php" target="_blank" rel="nofollow">http://www.ipm.kstu.ru/it/lec/7.php</a>
https://visavi.net/topics/19287/327260
Выдача файла php скриптом ДмитрийWed, 02 Mar 2011 17:23:18 +0300Сообщенияhttps://visavi.net/topics/19287/327260