在AWS S3上获取文件而不使用Laravel公开bucket
我正在与Laravel一起处理S3文件 我的S3没有公共访问权限,但Laravel配置了一个AWS用户,该用户在S3上具有管理员权限 因此,我可以毫无问题地在S3中上传文件 我的问题来自于从那里获取文件 如果我使用:在AWS S3上获取文件而不使用Laravel公开bucket,laravel,amazon-web-services,amazon-s3,Laravel,Amazon Web Services,Amazon S3,我正在与Laravel一起处理S3文件 我的S3没有公共访问权限,但Laravel配置了一个AWS用户,该用户在S3上具有管理员权限 因此,我可以毫无问题地在S3中上传文件 我的问题来自于从那里获取文件 如果我使用: Storage::disk('s3')->url($this->path); 我将生成具有以下格式的链接: https://bucket.s3.region.amazonaws.com/path/filename.pdf 但由于S3上不允许公共访问,它会给我 Acc
Storage::disk('s3')->url($this->path);
我将生成具有以下格式的链接:
https://bucket.s3.region.amazonaws.com/path/filename.pdf
但由于S3上不允许公共访问,它会给我
Access Denied
如果我使用
Storage::disk('s3')->get($this->path);
我可以从文件中下载数据,但不知道如何处理它
编辑:执行以下操作:
Storage::disk('local')->put(
'filename.txt',
Storage::disk('s3')->get('cloud-filename.txt'));
将复制存储文件夹中的S3文件。现在,我应该如何生成工作链接?您是否尝试过生成临时URL
//链接将在5小时后过期。
$expires_at=now()->addHours(5);
存储::磁盘('s3')->临时URL($this->path,$expires\u at);
关于你的第二个问题,我认为应该是相反的:
//从本地磁盘检索文件'filename.txt',并将其作为'cloud filename.txt'放在s3磁盘上
存储::磁盘('s3')->put(
“cloud filename.txt”,
存储::磁盘('local')->get('filename.txt')
);
我在文档中看到了临时URL,但没有意识到它是用于我的用例的。美好的谢谢你。我不需要第二个。