laravel - php laravel 将文件直接上传到 AWS S3 存储桶
问题描述
谁能帮助我如何使用 PHP laravel 将文件上传到 aws S3 存储桶中。但是文件应该使用预签名的 URL 直接上传到 S3。
解决方案
我将尝试回答这个问题。因此,有两种方法可以做到这一点:
您将预签名的 URL 发送到前端客户端并让他们直接将文件上传到 S3,一旦上传,他们就会通知您的服务器。
您直接在服务器上接收文件并将其上传到 S3,在这种情况下,您不需要任何预签名的 URL,因为您已经在项目中配置了 AWS 访问。
由于解决方案 1 是不言自明的,我将尝试解释解决方案 2。
Laravel 提供Storage
Facade 来处理文件系统操作。它遵循多个驱动程序的理念 - Public
, Local Disk
, Amazon S3
,FTP
以及扩展驱动程序的选项。
第 1 步:使用 AWS 密钥配置您的 .env 文件,您需要以下值才能开始Amazon S3
用作驱动程序:
- AWS 密钥
- AWS 秘密
- AWS 存储桶名称
- AWS 存储桶区域
第 2 步:假设您已经将文件上传到服务器。我们现在将文件从我们的服务器上传到 S3。
如果您提到s3
了默认磁盘,则以下代码段将为您进行上传:
Storage::put('avatars/1', $fileContents);
如果您使用多个磁盘,您可以通过以下方式上传文件:
Storage::disk('s3')->put('avatars/1', $fileContents);
我们完了!您的文件现在已上传到您的 S3 存储桶。在您的 S3 存储桶中仔细检查它。
如果你想了解更多关于 Laravel 存储的信息,请点击这里。
推荐阅读
- angular - 无法在离子 3 中的地图上显示多个标记
- apache-kafka - 为了支持 18 台 kafka 机器,我们需要多少个 zookeper 服务器
- python-3.x - 有循环中断列表框?
- angular - 概括休息服务调用并将服务器响应映射到我的对象
- python - 在 Ansbile Vault 中存储密码并使用 API 从 Python 脚本中检索该密钥
- iis - 在 ASP.NET 中使用 QUERY_STRING 重写特定条件的 URL
- r - 在文本文件中的特定行之间粘贴文本?(右)
- r - 在 R 中重新组织数据框
- java - 如何在 JAVA 中将字符串变量转换回字节 []
- jquery - Ajax 发布到 Laravel API 访问错误