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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112068.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java8学习笔记(一)–Lambda表达式

    Java8学习笔记(一)–Lambda表达式两个概念函数式接口函数式接口就是只显式声明一个抽象方法的接口。为保证方法数量不多不少,java8提供了一个专用注解,这样,当接口中声明的抽象方法多于或少于一个时就会报错。如下图所示:L

    2022年8月3日
  • 计算机中为什么会用补码运算符号_负数求补码

    计算机中为什么会用补码运算符号_负数求补码总所周知,计算机内部的所有数都是以二进制的形式存在的。而二进制在计算机里又有多种编码方式——原码、反码、补码等。而在这些编码方式里面用得最多的不是最简单、最直接的原码而是补码。这是为什么呢?想搞懂这个问题首先得明白什么是原码、反码以及补码,如果你对他们还不太了解,那就先看看我另一篇博客——原码、反码、补码其实很简单。如果你对他们已经很熟悉,那么我们继续往下看。A、B、C三种相似的东西,

    2022年9月16日
  • docker容器基础命令

    docker容器基础命令

    2021年6月10日
  • mysql 按位取反_按位与,按位异或,按位取反「建议收藏」

    mysql 按位取反_按位与,按位异或,按位取反「建议收藏」**&按位与,相同的不变,否则都算成0|按位或,^按位异或,不相同的都算成1**PHP按位与或(^、&)运算也是很常用的逻辑判断类型,有许多的PHP新手们或许对此并不太熟悉,今天结合一些代码对PHP与或运算做些介绍,先说明下,在PHP中,按位与主要是对二进制数操作:$a=1;$b=2;$c=$a^b;echo$c//3?>十进制1换算成二进制为:0…

    2022年8月14日
  • python读取txt文件并画图[通俗易懂]

    1,使用python读取txt文件已知txt文件内容如下:001124394165256361234567请以第一列为x轴,第二列为y轴画图 步骤如下: 1)使用readlines读取文件 2)建立两个空列表X,Y,将第一列的数字放入X,第二列的数字放入Y中 3)以X,Y为轴画图 实现如下…

    2022年4月7日
  • debian 开机启动脚本_ubuntu 自启动脚本

    debian 开机启动脚本_ubuntu 自启动脚本在debian6中,加入开机启动脚本的方法与debian5不同了,直接做符号链接到runlevel已经不起作用了,提示缺少LSB信息,并且用insserv来替代update-rc.d:root@14:/etc/rc2.d#update-rc.d-n php_fastcgi.sh defaults           update-rc.d:usingdependencybas

    2022年10月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号