📜  laravel 7 上传文件 s3 - PHP (1)

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

Laravel 7 上传文件 s3 - PHP

在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中。但这是最简单和最常用的方法之一。