I have setup the following method using Guzzle and Laravel’s streamDownload()
:
public function export(Request $request, string $uuid) { $api = $this->do_api; $client = new Client(['headers' => ['Authorization' => "Bearer {$this->do_token}"]]); return response()->streamDownload(function () use ($uuid, $api, $client) { $client->get("{$api}/customers/my/invoices/{$uuid}/pdf")->getBody(); },"{$uuid}.pdf"); }
And while I have confirmed that this API does return a PDF file, the PDF being returned by laravel has 0 bytes, what am I doing wrong?
Advertisement
Answer
I was missing a echo
inside the callable function:
$api = $this->do_api; $client = new Client(['headers' => ['Authorization' => "Bearer {$this->do_token}"]]); return response()->streamDownload(function () use ($uuid, $api, $client) { echo $client->get("{$api}/customers/my/invoices/{$uuid}/pdf")->getBody(); },"{$uuid}.pdf");