2013-12-09 3 views
0

Я хочу получить видеофайл с другого сервера и открыть его на своем веб-сайте в flowplayer.cURL - Загрузка файла (неправильный размер)

Я сделал это:

$ch = curl_init('http://example.com/file.flv'); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $result = curl_exec($ch); 
     header("Content-Type: video/flv"); 
     header("Content-Disposition: attachment; filename=video.flv;"); 
     header("Content-Length: ".$size); 
     readfile($result); 

Но есть проблема с размером файла, он всегда показывает неправильный размер файла (слишком маленький)

Я должен использовать локон, потому что только мой IP-адрес сервера может получить видео с видеосервера.

Спасибо за помощь

ответ

0

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

$ch = curl_init('http://example.com/file.flv'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
$size = strlen($result); 
header("Content-Type: video/flv"); 
header("Content-Disposition: attachment; filename=video.flv;"); 
header("Content-Length: ".$size); 
echo $result; 
+0

Спасибо за вашу помощь, но я нашел другую проблему, когда я использовал ваш метод, сценарий сначала попытается загрузить файл (я думаю, чтобы получить информацию о том, насколько большой файл), и после этого его работа. Когда я пытаюсь запустить только скрипт без flowplayer, загрузка веб-сайта занимает около 20 минут, а через 20 минут всплывающее окно загрузки. Есть ли более быстрый способ сделать это? не дожидаясь 20 минут, чтобы сервер мог проверить, насколько большой файл? можно ли вычислить размер файла в реальном времени? когда видео будет проигрываться в потоковом проигрывателе? – user3078794

+0

Я думаю, что вам нужна передача chunked, проверьте это [link] (http://stackoverflow.com/questions/10991443/curl-get-remote-file-and-force-download-at-same-time). – ecco

Смежные вопросы