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

举报
lxw1844912514 发表于 2022/03/27 02:23:49 2022/03/27
【摘要】 首先使用 composer在项目中下载aws: composer require aws/aws-sdk-php /*     * AWS S3上传文件     * @param string $file 文件名称     * @re...

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

composer require aws/aws-sdk-php
 

  
  1. /*
  2.      * AWS S3上传文件
  3.      * @param string $file 文件名称
  4.      * @return array $path
  5.      */
  6.     public function fileUpload($file){
  7.         //设置超时
  8.         set_time_limit(0);
  9.         //证书 AWS access KEY ID  和  AWS secret  access KEY 替换成自己的
  10.         $credentials = new Aws\Credentials\Credentials('AWS access KEY ID ', 'AWS secret  access KEY');
  11.         //s3客户端
  12.         $s3 = new Aws\S3\S3Client([
  13.             'version'     => 'latest',
  14.             //地区 亚太区域(新加坡)    AWS区域和终端节点: http://docs.amazonaws.cn/general/latest/gr/rande.html
  15.             'region'      => 'ap-southeast-1',
  16.             //加载证书
  17.             'credentials' => $credentials,
  18.             //开启bug调试
  19.             //'debug'   => true
  20.         ]);
  21.  
  22.         //存储桶 获取AWS存储桶的名称
  23.         $bucket = 'test';//'AWS存储桶名称';
  24.         //需要上传的文件 
  25.         $source = ROOT_PATH.$file; //ROOT_PATH项目根目录,文件的本地路径例:D:/www/abc.jpg;
  26.         //多部件上传
  27.         $uploader = new Aws\S3\MultipartUploader($s3, $source, [
  28.             //存储桶
  29.             'bucket' => $bucket,
  30.             //上传后的新地址
  31.             'key'    => $file,
  32.             //设置访问权限  公开,不然访问不了
  33.             'ACL'    => 'public-read',
  34.             //分段上传
  35.             'before_initiate' => function (\Aws\Command $command) {
  36.                 // $command is a CreateMultipartUpload operation
  37.                 $command['CacheControl'] = 'max-age=3600';
  38.             },
  39.             'before_upload'   => function (\Aws\Command $command) {
  40.                 // $command is an UploadPart operation
  41.                 $command['RequestPayer'] = 'requester';
  42.             },
  43.             'before_complete' => function (\Aws\Command $command) {
  44.                 // $command is a CompleteMultipartUpload operation
  45.                $command['RequestPayer'] = 'requester';
  46.             },
  47.         ]);
  48.  
  49.         try {
  50.                 $result = $uploader->upload();
  51.                 //上传成功--返回上传后的地址
  52.                 $data = [
  53.                     'type' => '1',
  54.                     'data' => urldecode($result['ObjectURL'])
  55.                 ];
  56.         } catch (Aws\Exception\MultipartUploadException $e) {
  57.            //上传失败--返回错误信息
  58.                 $uploader =  new Aws\S3\MultipartUploader($s3, $source, [
  59.                     'state' => $e->getState(),
  60.                 ]);
  61.                  $data = [
  62.                         'type' => '0',
  63.                         'data' =>  $e->getMessage();
  64.                    ];
  65.         } 
  66.         return $data;
  67.     }
  68.  



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

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

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/101274235

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。