【问题标题】:Laravel Livewire uploading files to AWS S3 bucketLaravel Livewire 将文件上传到 AWS S3 存储桶
【发布时间】:2021-02-07 17:16:53
【问题描述】:

我正在尝试使用 laravel livewire 上传文件。

我已经创建了我的 S3 存储桶。我还使用 AWSS3FullAccessRights 创建了我的用户。

默认情况下,我的 s3 存储桶已关闭公共访问。

当我上传文件时,我收到 403 禁止错误。请求网址是:

https://[bucket_name].s3.ap-southeast-2.amazonaws.com/livewire-tmp/HeFkgK7BTeFv2voaPzMPJdwqX69KQ4-metac2FtcGxlLW1wNC1maWxlLm1wNA%3D%3D-.mp4?x-amz-acl=private&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAS3BSKYVMYVLYCB44%2F20201025%2Fap-southeast-2%2Fs3%2Faws4_request&X-Amz-Date=20201025T041359Z&X-Amz-SignedHeaders=host%3Bx-amz-acl&X-Amz-Expires=300&X-Amz-Signature=9e87a654cbeab84772c18a950741027e7eeea1ad41b28e7b1c84a60cf2266147.

文件根本没有上传到 S3。我的 livewire 设置文件设置为 s3。我已将我的密钥、秘密、区域和存储桶名称输入到我的 .env 文件中。

我是否需要在 AWS 上设置任何其他权限才能使其正常工作。我看过的所有教程都不起作用,也不知道为什么。

任何问题都将不胜感激

谢谢 丹尼

【问题讨论】:

  • 这是 S3 预签名的 URL。什么角色/用户生成了这个 url?预签名 url 权限与生成它的人/事物有关,而不是您自己的权限。
  • 我猜是我创建并分配了 S3FullAccess 权限的用户。我在 IAM 中只有一个用户
  • 你解决了吗?我也有同样的问题

标签: laravel amazon-web-services amazon-s3 file-upload laravel-livewire


【解决方案1】:

这里的问题是允许跨域请求。我不得不将以下代码插入到 S3 存储桶中的 CORS 配置中

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>http://www.example1.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>http://www.example2.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 2020-10-10
    • 2017-10-17
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2018-02-16
    • 2015-09-10
    相关资源
    最近更新 更多