Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将一个狂饮响应转换为对客户请求的响应?_Php_Laravel_Guzzle - Fatal编程技术网

Php 如何将一个狂饮响应转换为对客户请求的响应?

Php 如何将一个狂饮响应转换为对客户请求的响应?,php,laravel,guzzle,Php,Laravel,Guzzle,我有一个应用程序在Web服务器A上运行。我有第二个应用程序在Web服务器B上运行。两个Web服务器都需要登录。我需要做的是让对webserver a的请求传递到webserver B,并将文件返回到客户端,而不让客户端登录到webserver B(换句话说,客户端将看不到webserver B,我将通过从a向B的请求处理身份验证凭据)。下面的代码是基于laravel框架构建的,但我不认为答案需要是laravel特定的 代码可以工作,但它只是将文件的头信息返回给调用客户端。不是文件本身 任何帮助都

我有一个应用程序在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”将流写入该资源。