PHP-- AWS S3云存储上传文件功能

比眉伴天荒 2022-03-09 16:58 659阅读 0赞

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

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

发表评论

表情:
评论列表 (有 0 条评论,659人围观)

还没有评论,来说两句吧...

相关阅读

    相关 AWS S3文件/文件夹删除

    1. 关于AWS S3的使用相关知识总结可以参考:[AWS S3 学习小结][AWS S3]。 2. 以下主要是想总结一下关于S3文件、文件夹如何删除,示例版本是源码里面的j

    相关 php 文件,PHP 文件

    文件上传概述 文件上传功能是网络生活中经常使用的一个功能。使用 PHP 可以很方便的实现文件上传,其具体流程如下: 表单选择文件 -> 检查文件大小及类型 -> 生成临时文

    相关 PHP实现文件功能

    注意:服务器中php.ini文件特征属性 我们需要手动在服务器端的 php.ini 中设置对表单传递的数据进一步判断 file\_uploads = On /Off 是否允