📜  将图像存储到 s3 laravel - PHP (1)

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

将图像存储到 S3 (Laravel - PHP)

在处理来自应用程序用户的图像时,为了避免将图像存储在应用服务器上,我们可以通过使用 Amazon Simple Storage Service (S3) 存储它们。这很有用,因为它可以:

  • 提供可靠的存储。
  • 减少应用服务器的资源压力,并提高性能。
  • 让您轻松备份数据。
  • 更容易扩展。
步骤
步骤 1:安装 AWS SDK

我们需要使用 AWS SDK for PHP 扩展包。您可以使用 composer 安装。

composer require aws/aws-sdk-php
步骤 2:配置 S3 服务

要开始使用 S3,我们需要身份验证凭证。可以从 AWS管理控制台 中生成 AWS Access Key ID 和 AWS Secret Access Key,然后配置 AWS SDK。

  1. 登录到 AWS 管理控制台,进入 IAM 管理控制台。
  2. 在 sidebar(侧边栏)中,选择“Users(用户)”。
  3. 选择您的用户。
  4. 选择“Security credentials(安全凭证)”选项卡。
  5. 单击“Create access key(创建访问密钥)”按钮,获取 AWS Access Key ID 和 AWS Secret Access Key。

现在我们可以配置 SDK,加载身份验证凭据和选择 S3 区域。

use Aws\S3\S3Client;

$s3 = new S3Client([
    'version' => 'latest',
    'region' => 'your-region',
    'credentials' => [
        'key' => 'your-access-key', // AWS Access Key ID
        'secret' => 'your-secret-access-key', // AWS Secret Access Key
    ],
]);
步骤 3:将图像上传到 S3 存储桶

现在,我们可以使用存储桶名称和要上传的文件名初始化上传。

use Aws\S3\Exception\S3Exception;

try {
    $result = $s3->putObject([
        'Bucket' => 'your-bucket-name', // 存储桶名称
        'Key' => 'file-name.jpg', // 要上传的文件名
        'SourceFile' => '/path/to/image.jpg', // 文件路径
        'ContentType' => 'image/jpeg', // 设置 content-type
    ]);

    // 文件已成功上传
    echo "File uploaded to S3 successfully.";
} catch (S3Exception $e) {
    // 出现错误
    echo $e->getMessage();
}
步骤 4:访问 S3 文件

我们可以使用以下代码生成已上传的文件的 URL:

$bucketUrl = 'https://s3-your-region.amazonaws.com';
$fileUrl = $bucketUrl . '/' . 'your-bucket-name' . '/file-name.jpg';

echo $fileUrl; // 打印文件 URL
结论

现在,我们已经成功地将图像存储到 S3。通过使用 S3,我们可以节省服务器资源,并获得可靠的、廉价的存储。如果您需要更多关于 AWS S3 的信息,您可以阅读官方文档。