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)
上一篇 2022年2月10日 下午10:00
下一篇 2022年2月10日 下午11:00


相关推荐

  • pycharm怎么配置tensorflow环境_python tensorflow安装

    pycharm怎么配置tensorflow环境_python tensorflow安装Pycharm安装并搭建Tensorflow开发环境下载并安装pycharm1.下载2.pycharm配置python环境安装tensorflow1.输入清华仓库镜像2.创建tensorflow环境3.启动tensorflow环境4.安装cpu版本的TensorFlow5.测试TensorFlowPycharm中配置TensorFlow环境在操作之前先安装好python环境,我是安装的Anaconda,Anaconda下载安装教程可参考:https://blog.csdn.net/Chen_Meng_

    2022年8月28日
    5
  • 尚硅谷2026年AI大模型智能体线上速成班教程资料

    尚硅谷2026年AI大模型智能体线上速成班教程资料

    2026年3月15日
    2
  • 少儿编程100讲轻松学python(七)-pycharm怎么删除项目

    少儿编程100讲轻松学python(七)-pycharm怎么删除项目前言 os 模块和 shutil 模块是 Python 处理文件 目录的主要方式 os 模块提供了一种使用操作系统相关功能的便捷方式 shutil 模块是一种高级的文件 目录操作工具 文件的处理 os 模块提供了一些便捷功能来使用操作系统资源 比如读取资源目录下的文件 在命令行查看某路径下文件的所有内容等 获取系统类型对代码进行兼容性开发以适应不同操作系统时通过操作系统类型进行判断就可以轻松解决 importosimpo os name 返回 nt 代表 Windows posix 代表 L

    2026年3月27日
    3
  • 智能视频分析_BVS安全帽识别系详解

    智能视频分析_BVS安全帽识别系详解BVS安全帽识别系列智能化产品BVS安全帽识别系列智能化产品​BVS安全帽识别系列智能化产品BVS安全帽识别系列智能化产品​BVS安全帽识别系列智能化产品BVS安全帽识别系列智能化产品系统组成结构由采集视频的摄像机,播放音箱,传输网络,安全帽识别仪,现场的显示屏,后台查看告警的管理PC和手机,公司的云平台或、和三方智慧工地监控平台等。​BVS安全帽识别系列智能化产品BVS安全…

    2022年5月18日
    47
  • java开发webservice接口_webservice接口的开发和调用

    java开发webservice接口_webservice接口的开发和调用一、WebService的开发手段使用Java开发WebService时可以使用以下两种开发手段1、使用JDK开发(1.6及以上版本)2、使用CXF框架开发(工作中)二、使用JDK开发WebService2.1、开发WebService服务器端1、定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示:1package…

    2022年7月16日
    22
  • 1174: 零起点学算法81——求整数绝对值

    1174: 零起点学算法81——求整数绝对值

    2022年3月2日
    49

发表回复

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

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