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

网友投稿 1118 2022-05-30

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

composer require aws/aws-sdk-php

/*

* AWS S3上传文件

* @param string $file 文件名

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

* @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

PHP

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于SpringBoot和Vue的企业级中后台开源项目,这项目有点哇塞!
下一篇:(更新时间)2021年4月1日 Django框架 命令行创建项目
相关文章