我通过第三方API加载视频。
它返回正文中的二进制数,并带有Transfer-Encoding :chunked
标题。如何将浏览器的流氓响应流式传输到浏览器?
我使用Guzzle 4
来消费api,我怎样才能轻松地将它传输到浏览器,所以我不需要首先将整个东西加载到内存中?
我不想将它设置为attachment
,因为我希望它在浏览器中播放而不是下载。
<?php
$client = new GuzzleHttp\Client();
// Download the video and stream it to the client
$response = $client->get($url)->send();
//But this will have to cache the whole thing in PHP memory first...
header("Content-Type:{$response->getHeader('Content-Type')}");
echo $response->getBody();
除了Guzzle,你知道还有什么是HTTP客户端吗?用户的浏览器。为什么不让它直接消费视频? – Chris
由于内容位于我们的应用程序(而非用户)身份验证的私有API的后面。我基本上需要通过浏览器代理视频请求,通过我们的应用程序执行auth和其他一些事情,然后将视频返回给消费客户端。如果第三方API提供了像S3这样的预先认证的URL,那么我可以将任何请求重定向到该网址,但我拥有的就是这个流,而我无法看到一种简单的代理方式... –