📜  laravel 从 s3 下载文件 - PHP (1)

📅  最后修改于: 2023-12-03 15:32:34.387000             🧑  作者: Mango

Laravel 从 S3 下载文件 - PHP

如果你正在使用 Laravel 框架,同时也是使用亚马逊 S3 作为你的存储后端,那么你可能需要将存储在 S3 上的文件下载到本地。这篇文章将会给你介绍如何在 Laravel 中使用 Storage Facade 下载文件。

步骤
  1. 首先,确认你已经配置好了 S3,可以在 config/filesystems.php 中找到相关的配置项。如果你还没有配置,可以查看 官方文档 进行配置。

  2. 如果你要下载的文件是公开的,那么你可以直接使用以下代码将文件下载到本地:

use Illuminate\Support\Facades\Storage;

Storage::disk('s3')->get('path/to/file.txt');

其中,path/to/file.txt 是存储在 S3 上需要下载的文件路径。执行这个代码,文件将被下载到你的 Laravel 项目的根目录

  1. 如果你要下载的文件需要身份验证,那么你需要设置 S3 的访问控制策略为 private。这样,下面这段代码将会为你下载文件并自动为你签名身份验证。
use Illuminate\Support\Facades\Storage;

$url = Storage::disk('s3')->temporaryUrl(
    'path/to/file.txt', now()->addMinutes(5)
);

return redirect()->away($url);

这里使用了 temporaryUrl 方法,它将根据你的配置自动为你签名,生成一个临时 URL,有效期可以指定,默认为 5 分钟。重定向到这个 URL 将会下载文件。

总结

这篇文章演示了如何在 Laravel 中使用 Storage Facade 下载文件,可以适用于上传到 S3 后需要下载的场景。如果你需要进行更高级的操作,比如分片下载,请查看 官方文档