直接从S3下载与通过服务器下载

时间:2020-08-29 09:06:06

标签: php laravel amazon-s3 download

这是关于用户的上载-托管在S3存储桶中-以及下载它们的最佳方法。目前,我使用以下内容:

return response()->streamDownload(function(){
    // Fetch the file
    print Storage::disk('s3')->get('file');

}, 'file-name.ext');

这很好用,但是如您所见,首先从S3提取文件,然后通过服务器流式传输到用户的浏览器。我认为这是不必要的工作(调用S3和带宽),因为我们可以直接将其从S3服务器上强制下载。

我在这里有两个问题:如何从s3强制下载文件,更重要的是;我在想这个吗?但是我真的很讨厌两次下载文件并对服务器施加更大压力的想法!

1 个答案:

答案 0 :(得分:1)

预签名的urls功能是必经之路!这是代码:

$url = Storage::disk('s3')->temporaryUrl($path, now()->addMinutes(5), [
    'ResponseContentDisposition' => "attachment; filename=$fileName.txt"
]);