我希望能够转到mydoma.in/tunnel.php?file=http://otherdoma.in/music.mp3
,然后将http://otherdoma.in/music.mp3
的数据流式传输到客户端。
我尝试通过Header();
执行此操作,但重定向而不是“调整”数据。
我该怎么做?
答案 0 :(得分:1)
使用cURL进行流式传输:
<?php
$url = $_GET["file"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_BUFFERSIZE, 256);
curl_exec($ch);
curl_close($ch);
?>
答案 1 :(得分:0)
让您的PHP脚本提取远程内容:
$data = file_get_contents($remote_url);
然后吐出来:
echo $data;
或者简单地说:
echo file_get_contents($remote_url);
您可能需要添加一些标题来指明内容类型。
或者,您可以使用nginx
等配置代理 - 这将允许您将特定URL重写为远程站点,然后将其作为本地服务,无需编码。
答案 2 :(得分:0)
如果它们很小,您可以使用file_get_contents()。否则,您应该使用cURL。您可能希望从get变量“file”中获取URL。然后使用PHP将其保存到本地临时位置。然后,使用header()将自己定向到本地文件。删除临时文件是唯一的问题,因为没有办法确定何时完成下载。因此,您可以睡眠或延迟文件删除,但您可能会发现使用cron作业以后清理所有临时文件是更好的选择。