laravel - 无法使用 Laravel 将私有文件上传到 s3 存储桶/文件夹
问题描述
我的 Laravel 项目中有以下代码:
$filename = 'bagel-corp-nda.pdf';
Storage::disk('s3')->put('agreements/'.$filename, file_get_contents($filename),'private');
当我触发此代码时,任何人都可以转到链接https://confidential-agreements.s3.ca-central-1.amazonaws.com/agreements/bagel-corp-nda.pdf
并查看上传的 PDF。这个'private'
论点并没有使我的上传不公开。
我究竟做错了什么?
解决方案
根据这个论坛帖子,默认情况下,可见性实际上是私有的。
默认情况下,所有对象都是私有的:只有所有者拥有完全控制权。添加新对象时,您可以向单个 AWS 账户或预定义的 Amazon S3 组授予权限。
上面的引用来自支持该论坛主题的 Amazon 的 S3 API 文档。
所以你应该尝试在没有第三个参数的情况下简单地调用它,如下所示:
Storage::disk('s3')->put('agreements/'.$filename, file_get_contents($filename))
并确保您的 s3 磁盘配置没有'visibility' => 'public'
如果它仍然不起作用,那么您可以尝试遵循 API 文档并使用
// Untested
Storage::disk('s3')->put('agreements/'.$filename, file_get_contents($filename), ['x-amz-acl' => 'private'])
推荐阅读
- c# - 使用 C# 中的线程列表同步消息
- docker - 错误:您没有在 GDB 的命令行上指定 -i=mi!在 Docker 中
- javascript - 如何插入记录并在插入后打印?
- node.js - 如何覆盖环回中默认方法的描述?
- android - Xamarin 和 httpclient 请求在模拟器中返回正常,但在设备上没有
- php - 在 RSS Feed WordPress 中仅包含带有元键“add_in_rss”的帖子
- linux - 更改根@
在 Ubuntu 18.04 中 - php - 没有传输支持给定的 Messenger DSN 原则
- vue.js - Vue.delete 或 $delete UI 未更新后
- ios - AVFoundation 是否支持 UPC 条码?