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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 详解RPN网络[通俗易懂]

    详解RPN网络[通俗易懂]引言RPN(RegionProposalNetwork)是Faster-RCNN网络用于提取预选框(也就是RCNN中使用selectivesearch算法进行RegionProposal的部分),我们知道RCNN及Fast-RCNN中一个性能瓶颈就是提取预选框的部分,而RPN很好地对这个部分进行了优化,原因在于它将卷积神经网络引入了进来,使用特征提取的形式生成出预选框的位置从而降低了selectivesearch算法带来的计算时间上的开销。RPN(RegionProposalNetwor

    2022年6月23日
    40
  • 【数据结构】单链表上的基本运算

    【数据结构】单链表上的基本运算【数据结构】单链表上的基本运算

    2022年4月25日
    43
  • js数组拼接的四种方法[通俗易懂]

    js数组拼接的四种方法[通俗易懂]vara=[1,2,3,4,5,6];varb=["foo","bar","fun"];最终的结果是:[1,2,3,4,5,6,"foo","bar","fun"]方法1:concatc=a.concat(b);c是新数组,此时内存使用有,c,a,b三个数组。方法2:

    2022年6月14日
    38
  • 【NOIP2012提高组】借教室[通俗易懂]

    【NOIP2012提高组】借教室[通俗易懂]题目背景NOIP2012 提高组 DAY2 试题。题目描述在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来 n 天的借教室信息,其中第 i 天学校有 ri 个教室可供租借。共有 m 份订单,每份订单用三个…

    2022年8月22日
    5
  • USB(UVC协议)摄像头

    USB(UVC协议)摄像头一 背景知识 1 1 背景 UVC 全称为 USBVideoClas 即 USB 视频类 是一种为 USB 视频捕获设备定义的协议标准 是 Microsoft 与另外几家设备厂商联合推出的为 USB 视频捕获设备定义的协议标准 已成为 USBorg 标准之一 对于一个 usb 摄像头来说 内部大概分为一个 VC 接口和一个 VS 接口 VC 接口内部有许多 unit 和 terminal 用来 控制 摄

    2025年11月28日
    5
  • android 中国通信乱码问题

    android 中国通信乱码问题

    2022年1月1日
    51

发表回复

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

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