[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод видео через PHP
jalvar
Запрос: http://test1.ru/download.php?id=1
Переменная row['video_url'] содержит значение "http://test1.ru/video/1/1.mp4"
<?
//Подключение к Базе Данных
include("flybit/mysql/configuration.php");
// Конфигурация Системы
include("flybit/system/configuration.php");

if(isset($_GET['id']))
{
$id = $flybit->check_input($_GET['id']);
$query=mysql_query("SELECT `video_url` FROM `content` WHERE `id`='".$id."'");
$num=mysql_num_rows($query);
if($num < 1)
{
exit('<meta http-equiv="refresh" content="0;URL=index.php" />');
}
else
{
$row=mysql_fetch_assoc($query);
$format=explode('.',$row['video_url']);
$format=substr($format[1], 0, 2);
if($format == 'flv')
{
$mime="video/x-flv";
}
else
{
$mime="video/mp4";
}

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-type: ".$mime);
header("Content-Transfer-Encoding: binary");
$outname=$row['video_url'];
$len = filesize($outname);
header("Content-Length: ".$len.";\n");

readfile ($outname);
}
}

else
{
exit('<meta http-equiv="refresh" content="0;URL=index.php" />');
}
?>

В результате выводиться видео 0 кб.



Спустя 30 минут, 30 секунд (25.02.2012 - 13:01) Jack_White написал(а):
jalvar ты хоть структуру базы приблизительную покажи а то так сложно разобрать. Но вот у тебя $id в базе разве типа стринг? может без апострофов надо
Цитата (jalvar @ 25.02.2012 - 09:30)
$query=mysql_query("SELECT `video_url` FROM `content` WHERE `id`='".$id."'");

вообще поставь

$query=mysql_query("SELECT `video_url` FROM `content` WHERE `id`='".$id."'") or die(mysql_error());

и смотри

Спустя 2 минуты, 39 секунд (25.02.2012 - 13:04) jalvar написал(а):
На базу вобще не обращай внимание.
Вот часть которая нужна.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-type: ".$mime);
header("Content-Transfer-Encoding: binary");
$outname=$row['video_url'];
$len = filesize($outname);
header("Content-Length: ".$len.";\n");

readfile ($outname);

Спустя 10 минут, 58 секунд (25.02.2012 - 13:15) Jack_White написал(а):
ну ты уверен что обрабатываешь строку видео норм?
проверь что у тебя выводит

Цитата (jalvar @ 25.02.2012 - 09:30)
header("Content-Length: ".$len.";\n");

как-то странно строка записана разве правильно?

Спустя 40 минут, 42 секунды (25.02.2012 - 13:55) jalvar написал(а):
Ура. Ошибка оказалась в функции и в результате файл содержал не видео, а ошибку в нем.
Как заголовком передать название сохраняющего файла?

Спустя 25 минут, 57 секунд (25.02.2012 - 14:21) Jack_White написал(а):
тоже не то
Цитата (jalvar @ 25.02.2012 - 10:04)
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n");


Ты проверь что имеешь перед отправкой а тогда отправлять можно...

Цитата (jalvar @ 25.02.2012 - 10:04)
readfile ($outname);

а сначала не надо fopen()?

Спустя 2 часа, 14 минут, 32 секунды (25.02.2012 - 16:36) killer8080 написал(а):
Цитата (jalvar @ 25.02.2012 - 12:55)
Как заголовком передать название сохраняющего файла?

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));


_____________
jallvar.oxnull.net - мой блог.
Быстрый ответ:

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