首页 > 解决方案 > 从 AWS S3(非公共存储桶)下载 Laravel 中的文件

问题描述

我可以将所有文件保存在存储桶中,但下载有困难。
我的代码是:

$url = Storage::disk('s3')->temporaryUrl(
        $request->file, now()->addMinutes(10)
    );
    return Storage::disk('s3')->download($url);

完整的文件路径存储在$request->file

示例路径:https://bucket_name.privacy_region_info/folder_inside_bucket/cTymyY2gzakfczO3j3H2TtbJX4eeRW4Uj073CZUW

我正在休耕https://prnt.sc/1ip4g77

我不明白生成temporaryUrl的目的吗?如何从 S3 非公共存储桶下载文件?

顺便说一句,我正在使用 Laravel 8 和 League/flysystem-aws-s3-v3 1.0.29。

标签: laravelamazon-web-servicesamazon-s3

解决方案


您显示的错误消息表明您的用户没有正确的权限,或者该文件不存在。

如果您确定该文件存在,我会怀疑是权限问题。

在 AWS IAM 中,确保用户附加了一个授予正确权限的策略。

在这种情况下,从评论中,我可以看到用户只有“写”权限。您还需要明确的“读取”权限。


推荐阅读