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

Php 直接从S3下载与通过服务器下载,php,laravel,amazon-s3,download,Php,Laravel,Amazon S3,Download,这是考虑到用户的上传(托管在S3存储桶中)和下载它们的最佳方法。目前,我使用以下方法: return response()->streamDownload(函数(){ //取文件 打印存储::磁盘('s3')->获取('file'); },'file name.ext'); 这很好,但正如您所看到的,文件首先从S3获取,然后通过服务器流式传输到用户的浏览器。我认为这是不必要的工作(调用S3和带宽),因为我们可以强制从S3服务器下载它 我这里有两个问题:如何强制从s3下载文件,更重要的是;我是不

这是考虑到用户的上传(托管在S3存储桶中)和下载它们的最佳方法。目前,我使用以下方法:

return response()->streamDownload(函数(){
//取文件
打印存储::磁盘('s3')->获取('file');
},'file name.ext');
这很好,但正如您所看到的,文件首先从S3获取,然后通过服务器流式传输到用户的浏览器。我认为这是不必要的工作(调用S3和带宽),因为我们可以强制从S3服务器下载它


我这里有两个问题:如何强制从s3下载文件,更重要的是;我是不是想得太多了?但是我真的很讨厌下载两次文件,给服务器带来更大的压力

预签名URL功能是一个不错的选择!代码如下:

$url=Storage::disk('s3')->临时url($path,now()->addMinutes(5)[
'ResponseContentDisposition'=>“附件;文件名=$filename.txt”
]);

该文件在S3上公开吗?可能值得一读(更多内容涵盖了一般的想法,而不是简单的解决方案)。@Rwd是的,它是公开的可能(从链接的问题)一个预签名的URL可能值得一看。这更适用于允许临时链接的私人文件。然后(取决于文件类型),您应该能够简单地向页面添加指向该文件的链接。也可能值得一看: