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


相关推荐

  • XML格式化工具[通俗易懂]

    XML格式化工具[通俗易懂] 做接口开发的时候,往往接受参数或返回值是一个XML的字符串。如下图,不方便辨识两种方法,1.将它保存为xxx.xml,然后用浏览器打开。这种方法稍微有些麻烦。2.使用UltraEdit工具 …

    2022年7月16日
    11
  • 盘点分布式文件存储系统

    盘点分布式文件存储系统在项目的数据存储中,结构化数据通常采用关系型数据库,非结构化数据(文件)的存储就有很多种方式,服务器本地存储、Nas挂载、ftp等等,今天就来盘点一下,分布式文件存储系统。

    2022年6月10日
    89
  • 0xc000007b报错(win10 0xc000007b蓝屏)

    最后更新:2019-3-23请大家首先确定已经按照原文的方法及步骤尝试过,但是还是没有解决问题再来看这篇文章。如果你还没有看过原文,请先看原文:http://blog.csdn.net/VBcom/article/details/6070705看到这里的朋友,应该是看了原文但是没有解决问题。其实这个问题基本上就是由DirectX引起,但是…

    2022年4月10日
    97
  • DOS命令 tasklist

    DOS命令 tasklist在WindowsXP中使用“Ctrl+Alt+Del”组合键,进入“Windows任务管理器”,在“进程”选项卡中可以查看本机完整的进程列表,而且可以通过手工定制进程列表的方式获得更多的进程信息,如会话ID、用户名等,但遗憾的是,我们查看不到这些进程到底提供了哪些系统服务。其实,在WindowsXP中新增的一个命令行工具“Tasklist.exe”就能实现上面的功能。作用:用来显示运行在本地

    2022年5月29日
    28
  • file.encoding的简单学习 java

    file.encoding的简单学习 java

    2021年8月28日
    54
  • 你也可以成为VTuber

    你也可以成为VTuber

    2021年7月5日
    82

发表回复

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

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