📅  最后修改于: 2023-12-03 15:02:34.343000             🧑  作者: Mango
在Laravel 7中,上传文件到Amazon S3存储桶是非常简单的。S3是一个强大的可扩展的云存储服务,它允许将文件上传到云中,下载它们并访问它们的元数据。
首先,你需要适当的凭据才能连接到S3。可以在AWS控制台中创建一个IAM用户并赋予它与S3相关的权限。
接下来,你需要安装AWS SDK for PHP。可以使用Composer安装,运行以下命令:
composer require aws/aws-sdk-php
接下来,你需要在.env文件中配置AWS凭据和S3桶信息:
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
然后,通过以下代码上传文件:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
public function upload(Request $request)
{
$file = $request->file('file');
$path = $file->store('s3');
return response()->json([
'path' => Storage::disk('s3')->url($path),
]);
}
上面的代码将上传文件到指定的S3桶中,并返回文件的URL。
这里用了store
方法和s3
驱动器来上传文件到S3桶。store
方法将文件保存到指定的磁盘(驱动器)上,这里是s3
。
可以使用put
方法来手动指定要保存到的S3路径:
Storage::disk('s3')->put('path/to/file', $fileContents);
也可以使用putFile
方法上传文件到S3:
Storage::disk('s3')->putFile('path/to/file', $file);
请注意,在将此文件上传到S3之前,必须确保在S3桶中设置了正确的权限。设置桶级别的权限,如下所示:
use Illuminate\Support\Facades\Storage;
Storage::disk('s3')->makeDirectory('path/to/directory', $acl = 'public-read');
上述方法适用于将文件上传到S3存储桶,并且S3桶的权限已正确配置。除此之外,还可以使用其他可用的方法将文件上传到S3中。但这是最简单和最常用的方法之一。