I'm currently working on a route for a project that I need to get a specific file from S3, read its content, and return as a binary. I can't just use the S3 file url, because it is private and it is intentional (we just don't want the bucket files open).
But the problem is, I want to stream it in a new page to not have the need to download the file.
Service:
$file = $this->s3Provider->getFileContents(false); // gets the file binary
return $file;
Controller:
return response()->streamDownload(function() use($file) {
echo $file; // streams data to download it, but I want just to show the file...
}, $filename);
CodePudding user response:
I thought you are using Laravel, if so then you could return your image like this:
return response($file, $filename, [
'Content-Type' => 'image/png',
'Content-Length' => filesize($file)
]);
Another way that I use to return image is:
return response()->file($path, array('Content-Type'=>'image/jpg'));
Content-Type
should be your image type (JPG, PNG, etc.).