Php 如何将一个狂饮响应转换为对客户请求的响应?
我有一个应用程序在Web服务器A上运行。我有第二个应用程序在Web服务器B上运行。两个Web服务器都需要登录。我需要做的是让对webserver a的请求传递到webserver B,并将文件返回到客户端,而不让客户端登录到webserver B(换句话说,客户端将看不到webserver B,我将通过从a向B的请求处理身份验证凭据)。下面的代码是基于laravel框架构建的,但我不认为答案需要是laravel特定的 代码可以工作,但它只是将文件的头信息返回给调用客户端。不是文件本身 任何帮助都将不胜感激 控制器:Php 如何将一个狂饮响应转换为对客户请求的响应?,php,laravel,guzzle,Php,Laravel,Guzzle,我有一个应用程序在Web服务器A上运行。我有第二个应用程序在Web服务器B上运行。两个Web服务器都需要登录。我需要做的是让对webserver a的请求传递到webserver B,并将文件返回到客户端,而不让客户端登录到webserver B(换句话说,客户端将看不到webserver B,我将通过从a向B的请求处理身份验证凭据)。下面的代码是基于laravel框架构建的,但我不认为答案需要是laravel特定的 代码可以工作,但它只是将文件的头信息返回给调用客户端。不是文件本身 任何帮助都
public function getAudioFile(Request $request)
{
//This is the id we are looking to pull
$uid = $request->uniqueid;
$audioServices = new AudioServices();
return $audioServices->getWavFile($uid);
}
服务:
public function getWavFile(String $uniqueId)
{
$client = new GuzzleHttp\Client(['verify' => false]);
return $client->request('GET', $this->connectString.$uniqueId, ['auth' => ['username', 'password']]);
}
您可以从Guzzle使用sink
选项来流式传输Guzzle请求的响应
您可以将该流传递给来自控制器的响应。我不确定Laravel是否有内置的流支持,但是。可以找到它的用法示例
如果您不想使用Guzzle的
sink
选项,您也可以使用响应本身作为。sink将文件保存到您在计算机上打开的资源(例如文件)。它不会将响应返回给调用代理。例如,如果资源是,它会返回。彼得:考虑到问题的上下文,您需要更好地解释这一点。原始请求来自Web服务器。我如何将资源“输送”回it?谢谢大家!这是你的答案的组合。创建了一个可写资源,该资源通过管道将流传输到php://output 然后在get调用中使用“sink”将流写入该资源。