PHP-- AWS S3云存储上传多文件与上传单个文件

首先使用 composer在项目中下载aws:

composer require aws/aws-sdk-php
/*
     * AWS S3上传文件
     * @param string $file 文件名称
     * @return array $path
     */
    public function fileUpload($file){
        //设置超时
        set_time_limit(0);
        //证书 AWS access KEY ID  和  AWS secret  access KEY 替换成自己的
        $credentials = new Aws\Credentials\Credentials('AWS access KEY ID ', 'AWS secret  access KEY');
        //s3客户端
        $s3 = new Aws\S3\S3Client([
            'version'     => 'latest',
            //地区 亚太区域(新加坡)    AWS区域和终端节点: http://docs.amazonaws.cn/general/latest/gr/rande.html
            'region'      => 'ap-southeast-1',
            //加载证书
            'credentials' => $credentials,
            //开启bug调试
            //'debug'   => true
        ]);
 
        //存储桶 获取AWS存储桶的名称
        $bucket = 'test';//'AWS存储桶名称';
        //需要上传的文件 
        $source = ROOT_PATH.$file; //ROOT_PATH项目根目录,文件的本地路径例:D:/www/abc.jpg;
        //多部件上传
        $uploader = new Aws\S3\MultipartUploader($s3, $source, [
            //存储桶
            'bucket' => $bucket,
            //上传后的新地址
            'key'    => $file,
            //设置访问权限  公开,不然访问不了
            'ACL'    => 'public-read',
            //分段上传
            'before_initiate' => function (\Aws\Command $command) {
                // $command is a CreateMultipartUpload operation
                $command['CacheControl'] = 'max-age=3600';
            },
            'before_upload'   => function (\Aws\Command $command) {
                // $command is an UploadPart operation
                $command['RequestPayer'] = 'requester';
            },
            'before_complete' => function (\Aws\Command $command) {
                // $command is a CompleteMultipartUpload operation
               $command['RequestPayer'] = 'requester';
            },
        ]);
 
        try {
                $result = $uploader->upload();
                //上传成功--返回上传后的地址
                $data = [
                    'type' => '1',
                    'data' => urldecode($result['ObjectURL'])
                ];
        } catch (Aws\Exception\MultipartUploadException $e) {
           //上传失败--返回错误信息
                $uploader =  new Aws\S3\MultipartUploader($s3, $source, [
                    'state' => $e->getState(),
                ]);
                 $data = [
                        'type' => '0',
                        'data' =>  $e->getMessage();
                   ];
        } 
        return $data;
    }
 



参考链接:https://blog.csdn.net/u011477914/article/details/88534191

官方操作文档:https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/mpuoverview.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lxw1844912514

你的打赏就是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值