laravel - 从 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
我不明白生成temporaryUrl的目的吗?如何从 S3 非公共存储桶下载文件?
顺便说一句,我正在使用 Laravel 8 和 League/flysystem-aws-s3-v3 1.0.29。
解决方案
您显示的错误消息表明您的用户没有正确的权限,或者该文件不存在。
如果您确定该文件存在,我会怀疑是权限问题。
在 AWS IAM 中,确保用户附加了一个授予正确权限的策略。
在这种情况下,从评论中,我可以看到用户只有“写”权限。您还需要明确的“读取”权限。
推荐阅读
- mql5 - 在 MetaTrader 5 中为策略测试定义动态限制
- javascript - Electron TypeError: $(...).jstree 在我尝试使用它时不是一个函数
- ruby-on-rails - (localhost:27017) 上的服务器报告线路版本 (0),但此版本的 Ruby 驱动程序至少需要 (2)。)
- python - Selenium youtube 评论机器人,找不到 youtube 评论框
- python - Python 每 8 次迭代加入列表
- javascript - 迭代状态变量
- typescript - 来自无类型对象的打字稿索引类型
- reactjs - 在 React Navigation 中更新另一个屏幕的状态
- android - 使用 rxJava 和 MVP 的 GoogleMaps
- postgresql - Postgres:更新数组中的特定json对象