2013-12-09 102 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