使用 Laravel和Amazon s3显示"安全"图像的最快速方法是什么?



在我的Laravel应用程序中,我有一个用于使用Amazon S3的登录用户的库。

现在我以这种方式下载每个缩略图和图像:

public function download($file_url){ // is safe, but slow...
$mime = Storage::disk('s3')->getDriver()->getMimetype($file_url);
$size = Storage::disk('s3')->getDriver()->getSize($file_url);
$response =  [
'Content-Type' => $mime,
'Content-Length' => $size,
'Content-Description' => 'File Transfer',
'Content-Disposition' => "attachment; filename={$file_name}",
'Content-Transfer-Encoding' => 'binary',
];
return Response::make(Storage::disk('s3')->get($file_url), 200, $response);
}

这是安全的(因为我有一个带middleware('auth')的路由器,但非常服务器密集且速度慢。

是否可以直接从亚马逊下载文件:

  • 仅适用于(在我的 Laravel(登录用户(可能带有临时下载链接(?
  • 还是仅具有安全的唯一链接?

您可以使用临时网址:

$url = Storage::disk('s3')->temporaryUrl(
'file.jpg', now()->addMinutes(5)
);

第一个参数是 S3 上的路径,第二个参数是您希望 URL 工作多长时间。如果您只希望 URL 适用于单个页面加载,请将此值设置为较低的值。

https://laravel.com/docs/5.6/filesystem(在"临时 URL"下(

相关内容

最新更新