📅  最后修改于: 2023-12-03 14:43:48.010000             🧑  作者: Mango
在开发 Web 应用程序时,通常需要将文件从本地存储转移到云存储,以便用户可以方便地访问和共享这些文件。Amazon S3 是一个安全、持久、可扩展的对象存储服务,用于存储和检索任意数量的数据。Laravel 框架提供了简单易用的 API,可以轻松地将文件从本地移动到 S3。
在使用 Laravel 将文件从本地存储转移到 S3 前,您需要做以下准备工作:
composer require aws/aws-sdk-php-laravel
composer require league/flysystem-aws-s3-v3
有了存储桶和访问密钥以及所需的软件包,现在可以使用 Laravel 的 Filesystem API 轻松地将文件从本地移动到 S3。
首先,在 config/filesystems.php
文件中配置 S3 驱动程序。在 disks
数组中添加以下代码片段:
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
其中,AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
、AWS_DEFAULT_REGION
、AWS_BUCKET
和 AWS_URL
分别为访问密钥、密钥、区域、存储桶和 URL。
然后,在您的控制器中,使用以下代码将文件从本地移动到 S3:
use Illuminate\Support\Facades\Storage;
public function moveFileToS3($filename)
{
$path = storage_path('app/public/' . $filename);
$s3 = Storage::disk('s3');
$s3->put($filename, file_get_contents($path), 'public');
// 删除本地文件
unlink($path);
}
在这个例子中,$filename
是要移动的文件名,$path
是本地存储路径,$s3
是 S3 驱动程序的实例,$s3->put()
方法将文件内容上传到 S3 桶中,并设置文件为公共访问。
最后,调用 unlink()
方法删除本地文件。
unlink()
方法之前,请确保文件已经成功上传到 S3 中,否则可能会丢失数据。Laravel Filesystem API 提供了便利的方法,可以轻松将文件从本地转移到云存储中。在这篇文章中,我们介绍了如何将文件从本地存储移动到 Amazon S3 中。我们介绍了必要的软件包和配置,并介绍了一些注意事项。