首页 > 解决方案 > 在 Amazon S3 中显示图像的 Laravel 问题

问题描述

现在,我目前在尝试在我的 Amazon S3 文件夹中显示图像时遇到问题。

.env

AWS_ACCESS_KEY_ID=somekeyid
AWS_SECRET_ACCESS_KEY=somekey
AWS_DEFAULT_REGION=eu-central-1
AWS_BUCKET=https://awsq-s3.s3.eu-central-1.amazonaws.com

控制器.php

        $tempUrl =  Storage::disk('s3')->url('randomImage.jpg');

这显示了 url,但是当我尝试访问/显示图像时,它总是说:访问被拒绝。

但是,这个创建文件

        $value = Storage::disk('s3')->put('file.txt', 'Contents');

有效,它会在我的存储桶中创建文件。我尝试提供对我的帐户的完全访问权限(应用 AmazonS3FullAccess 策略),但它仍然显示访问被拒绝以显示图片。

有谁知道是什么问题?

标签: laravelamazon-web-servicesamazon-s3

解决方案


上传的图像可能是私有的。因此,您可能无法使用 url 显示。为了克服这个问题,Laravel 提供了 helper 函数temporaryUrl($path, $expiration, array $options = [])

$expiryDate = now()->addDay(); //The link will be expire after 1 day
$temporaryUrl = Storage::disk('s3')->temporaryUrl($url, $expiryDate);

然后,您现在可以使用 $temporaryUrl 在提供的到期日期下访问私有文件。

有关更多信息,请访问URL 文档


推荐阅读