Laravel HTTP 客户端发布响应保存文件

哈坎

将 post 请求发送到 Laravel 控制器中的另一个 api。它返回 .pdf 文件作为响应。我想将此文件保存到存储中。我收到 FileNotFound 异常。

这是代码

public function cvToPDF(Request $request)
{
        $response = Http::withHeaders(['Content-Type' => 'application/pdf'])
            ->withToken(Request()->bearerToken())
            ->post('http://some-endpoint', $request->all());
        
        Storage::disk('s3')->putFile('drive/files', $response);

        return $response;
}

return $response 在客户端工作。我可以使用此端点下载 pdf。但是 Storage::disk 引发异常。

马克西姆

因为您尝试保存响应,而不是文件。

sink() 方法的解决方法 - 这可能有效。

public function cvToPDF(Request $request)
{
    $tempName = tempnam(sys_get_temp_dir(), 'response').'.pdf';
    $response = Http::sink($tempName)
        ->withHeaders(['Content-Type' => 'application/pdf'])
        ->withToken(Request()->bearerToken())
        ->post('http://some-endpoint', $request->all());
    Storage::disk('s3')->putFile('drive/files', new File($tempName));
    return $response;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章