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;
}

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

相关推荐
darkb1rd16 小时前
四、PHP文件包含漏洞深度解析
网络·安全·php
毕设源码-邱学长19 小时前
【开题答辩全过程】以 基于PHP的发热病人管理平台的设计与实现为例,包含答辩的问题和答案
开发语言·php
catchadmin21 小时前
2026 年 PHP 前后端分离后台管理系统推荐 企业级方案
开发语言·php
小李独爱秋21 小时前
计算机网络经典问题透视:蜂窝网络切换如何“扼杀”你的TCP连接?
网络·网络协议·tcp/ip·计算机网络·php·信息与通信
Data_Journal21 小时前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
serve the people1 天前
python环境搭建 (十三) tenacity重试库
服务器·python·php
darkb1rd1 天前
五、PHP类型转换与类型安全
android·安全·php
毕设源码-钟学长1 天前
【开题答辩全过程】以 基于PHP的动漫社区的设计与实现为例,包含答辩的问题和答案
开发语言·php
qq_411262421 天前
短时间串口发送网络端怎么接收不到
开发语言·php
wxin_VXbishe1 天前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·spring boot·python·spring·django·php