我上傳圖片的方式如下:
$file = $request->featured_image;
$filename = time().'.'.$request->featured_image->extension();
$file->storeAs('images/', $filename, 's3');
$course = Course::create([
'featured_image' => $filename,
]);
問題是當我試圖用刀片獲得它時:
<img src="{{Storage::disk('s3')->url($course->featured_image)}}" alt="course">
當我嘗試訪問 URL 時,我得到類似
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>0W0NVXNHFRJY7MYP</RequestId>
<HostId>Xex73PhCOr1fm6cnhkDTOeqppblAYIrUtZ1jO81Jh3yjEhIHzvRcWsAg22VL5QrIoXcgefX6GTc=</HostId>
</Error>
對于 AWS 的權限,我授予了對 S3 的完全訪問權限。所以我不確定為什么會這樣。該檔案確實被保存了。
uj5u.com熱心網友回復:
這可能是因為您有一個私有存盤桶,您可以很容易地發出臨時 URL,但可以解決這個問題。(或打開您的存盤桶的權限)
例子:
Storage::disk('s3')->temporaryUrl($image, now()->addMinutes(30))
編輯:桶隱私選擇->

uj5u.com熱心網友回復:
將影像保存到 S3 時,替換以下行
$file->storeAs('images/', $filename, 's3');
和
$file->storePublicly('images/', $filename, 's3');
看起來您正在將影像保存到images/filename.jpg但是在嘗試檢索時,您只傳遞了檔案名,請嘗試以下行并讓我知道您的操作
{{Storage::disk('s3')->url('images/'.$course->featured_image)}}
uj5u.com熱心網友回復:
Amazon S3 物件的 URL 不包含您的用戶憑證,因此對物件的請求是匿名的。對于對非公共物件的匿名請求,Amazon S3 回傳訪問被拒絕錯誤。
https://aws.amazon.com/premiumsupport/knowledge-center/s3-troubleshoot-403/
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/486456.html
