2013-12-09 96 views
0

我想從另一臺服務器獲取視頻文件,並在流水遊戲中將其在我的網站上打開。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()用來讀取文件並將其寫入到輸出,使用echo代替,否則,使用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

感謝您的幫助,但是我發現了另一個問題,當我使用您的方法時,腳本首先嚐試下載文件(我認爲要獲取信息有多大),然後才能正常工作。當我嘗試在沒有流水遊戲的情況下運行腳本時,需要大約20分鐘才能加載網站,並在此20分鐘後下載窗口彈出。有沒有更快的方法來做到這一點?無需等待20分鐘讓服務器檢查文件有多大?是否可以實時計算文件的大小?當視頻將在流水遊戲中播放? – user3078794

+0

我認爲你需要的是分塊傳輸,請檢查此[鏈接](http://stackoverflow.com/questions/10991443/curl-get-remote-file-and-force-download-at-same-time)。 – ecco