php对接AWS S3云存储,上传S3及访问权限问题

首先先下载sdk包

https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installation.html

S3创建存储桶

去安全凭证-》创建访问秘钥

创建的时候会提示,主账号创建不安全,这个时候我们需要创建一个IAM账号来创建秘钥

创建的步骤访问这个链接 https://www.codenong.com/a513c91eac7186db59fe/

创建之后来到代码这一块

php 复制代码
//$keyName是存储S3的路径
//$filepath是本地图片的路径
awsUploadFile($keyName, $filepath);
//删除本地文件
unlink('.' . $resultData['url']);


function awsUploadFile($keyName, $filepath)
{
	//引入文件
    require_once '../extend/aws/aws-autoloader.php';
    //    set_time_limit(0);
    $awsConfig = [
        'version' => 'latest',//版本
        'acl' => 'public-read',//权限//这个一定要加,是访问权限
        'bucket' => config('site.S3bucket'),//存储桶名称
        'region' => 'ap-southeast-1',//区域 和 亚马逊资源服务器创建的桶块区域一致
        'key_id' => config('site.S3key_id'),//Access key ID
        'access_key' => config('site.S3access_key'),//Secret access key
    ];
    //实例化
    $credentials = new Aws\Credentials\Credentials($awsConfig['key_id'],
        $awsConfig['access_key']);
    $s3 = new Aws\S3\S3Client([
        'version' => $awsConfig['version'],//版本
        'region' => $awsConfig['region'],//区域
        'credentials' => $credentials,
    ]);
    if(!file_exists($filepath)){
        dump('file does not exist');
        exit;
    }
//    $http = new GuzzleHttp\Client();
//    $res = $http->request('GET', $filepath);
    try {
        $result = $s3->putObject([
            'Bucket' => $awsConfig['bucket'],
            'Key' => $keyName,
            'Body' => fopen($filepath, 'r'),
            'ACL' => 'public-read',//这个一定要加,是访问权限
//            'Body' => $res->getBody(),
//            'ContentLength' => $res->getHeader('content-length')[0],
        ]);
    } catch (Exception $exception) {
        echo "Failed to upload $filepath with error: " . $exception->getMessage();
        exit("Please fix error with file upload before continuing.");
    }
    return $result;
}

如果是手动上传的文件需要开一下权限

相关推荐
不会摸鱼的小鱼10 小时前
WSL 安装 Ubuntu 22.04 到指定磁盘
数据库·postgresql·php
淼淼爱喝水14 小时前
DVWA和Pikachu命令注入漏洞检测实验
安全·web安全·php·pikachu·dvwa
专注VB编程开发20年14 小时前
json和python元组,列表,字典对比
开发语言·python·json·php
怀旧,15 小时前
【Linux网络编程】15. Reactor 反应堆模式
linux·网络·php
Dylan的码园15 小时前
2026年免费远程控制软件哪个好?ToDesk向日葵UU远程免费版横评,不限次数不限时长
服务器·开发语言·php
dog25016 小时前
解析几何的力量(1)
服务器·开发语言·网络·php
号码认证服务17 小时前
如何让来电显示公司名代替陌生数字号码?企业号码认证开通指南
服务器·c语言·网络·经验分享·智能手机·云计算·php
一念春风17 小时前
QwenPaw(替代小龙虾)大模型
开发语言·php
是有头发的程序猿18 小时前
AI Agent自动化交易流程:1688定制交易API全链路开发实战教程(Python源码)
python·自动化·php
极梦网络无忧18 小时前
# 从零打造 Composer 依赖包:ThinkPHP 项目开发实战指南
php·composer