这是关于用户的上载-托管在S3存储桶中-以及下载它们的最佳方法。目前,我使用以下内容:
return response()->streamDownload(function(){
// Fetch the file
print Storage::disk('s3')->get('file');
}, 'file-name.ext');
这很好用,但是如您所见,首先从S3提取文件,然后通过服务器流式传输到用户的浏览器。我认为这是不必要的工作(调用S3和带宽),因为我们可以直接将其从S3服务器上强制下载。
我在这里有两个问题:如何从s3强制下载文件,更重要的是;我在想这个吗?但是我真的很讨厌两次下载文件并对服务器施加更大压力的想法!
答案 0 :(得分:1)
预签名的urls功能是必经之路!这是代码:
$url = Storage::disk('s3')->temporaryUrl($path, now()->addMinutes(5), [
'ResponseContentDisposition' => "attachment; filename=$fileName.txt"
]);