You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP版AWS SDK 3实现简单上传对象至S3存储桶?

PHP AWS SDK 3 实现S3简单对象上传

以下是对应你SDK 2代码的SDK 3实现,保持简单上传的逻辑,适配SDK 3的API规范:

<?php

define('S3_KEY',            '你的AWS访问密钥');
define('S3_SECRET',         '你的AWS秘密密钥');
define('S3_BUCKET_NAME',    '目标存储桶名称');
define('S3_REGION',         '你的存储桶所在区域,例如us-east-1');

// 引入SDK 3的自动加载文件(通过Composer安装后)
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

try {
    // 创建S3客户端
    $s3 = S3Client::create([
        'credentials' => [
            'key'    => S3_KEY,
            'secret' => S3_SECRET,
        ],
        'region' => S3_REGION,
        'version' => 'latest', // 指定API版本,通常用latest即可
    ]);

    $origin = '本地文件路径'; // 对应你原代码中的$origin变量
    $filename = 'example/001/1.jpg'; // S3中的对象键

    // 打开本地文件资源
    $resource = fopen($origin, 'r');
    
    // 执行简单上传
    $s3->putObject([
        'Bucket' => S3_BUCKET_NAME,
        'Key'    => $filename,
        'Body'   => $resource,
        'ACL'    => 'public-read', // 设置对象为公开可读
    ]);

    // 生成并返回对象的公开URL
    return $s3->getObjectUrl(S3_BUCKET_NAME, $filename);
} catch (AwsException $e) {
    // 捕获上传异常,返回false
    return false;
}

关键差异说明

  • 客户端初始化:SDK 3使用S3Client::create()替代SDK 2的factory(),且必须指定存储桶所在的region参数
  • 上传方法:通过putObject()实现简单上传,参数以关联数组传递,结构更明确
  • URL获取:putObject()返回结果不再包含对象URL,需调用getObjectUrl()方法生成公开访问地址
  • 异常处理:统一捕获Aws\Exception\AwsException,涵盖所有S3相关异常

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:50:29