You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.4 KiB

6 years ago
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 阿里云OSS服务
  4. // +----------------------------------------------------------------------
  5. namespace App\Http\Service;
  6. require_once base_path('resources/org/OSS').'/OssClient.php';
  7. require_once base_path('resources/org/OSS/Core').'/OssException.php';
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. class AliyunOSS
  11. {
  12. const OSS_ACCESS_ID = 'LTAIqMYGJYT5U7ij';
  13. const OSS_ACCESS_KEY = 'yuQvyKywTaZ2ncx6hkSfr836GtETfd';
  14. const OSS_ENDPOINT = 'oss-cn-shenzhen.aliyuncs.com';
  15. const OSS_TEST_BUCKET = 'cheyoubao';
  16. /**
  17. * 根据Config配置,得到一个OssClient实例
  18. *
  19. * @return OssClient 一个OssClient实例
  20. */
  21. public static function getOssClient()
  22. {
  23. try {
  24. $ossClient = new \OssClient(self::OSS_ACCESS_ID, self::OSS_ACCESS_KEY, self::OSS_ENDPOINT, false);
  25. } catch (\OssException $e) {
  26. return ['code'=>1, 'msg'=>$e->getMessage(), 'data'=>''];
  27. }
  28. return $ossClient;
  29. }
  30. public static function getBucketName()
  31. {
  32. return self::OSS_TEST_BUCKET;
  33. }
  34. /**
  35. * 工具方法,创建一个存储空间,如果发生异常直接exit
  36. */
  37. public static function createBucket()
  38. {
  39. $ossClient = self::getOssClient();
  40. if (is_null($ossClient)) exit(1);
  41. $bucket = self::getBucketName();
  42. $acl = OssClient::OSS_ACL_TYPE_PUBLIC_READ;
  43. try {
  44. $res = $ossClient->createBucket($bucket, $acl);
  45. } catch (\OssException $e) {
  46. return ['code'=>1, 'msg'=>$e->getMessage(), 'data'=>''];
  47. }
  48. return ['code'=>0, 'msg'=>'操作成功', 'data'=>$res];
  49. }
  50. /**
  51. * 上传指定的本地文件内容
  52. *
  53. * @param OssClient $ossClient OssClient实例
  54. * @param string $bucket 存储空间名称
  55. * @return null
  56. */
  57. public static function uploadFile($object, $filePath)
  58. {
  59. //$object = "oss-php-sdk-test/upload-test-object-name.txt";
  60. //$filePath = __FILE__;
  61. $options = array();
  62. $ossClient = self::getOssClient();
  63. $bucket = self::getBucketName();
  64. try {
  65. //self::createBucket(); //如果没创建存储空间,先用这行执行创建存储空间
  66. $res = $ossClient->uploadFile($bucket, $object, $filePath, $options);
  67. } catch (\OssException $e) {
  68. return ['code'=>1, 'msg'=>$e->getMessage(), 'data'=>''];
  69. }
  70. return ['code'=>0, 'msg'=>'操作成功', 'data'=>$res];
  71. }
  72. /**
  73. * 把本地变量的内容到文件
  74. *
  75. * 简单上传,上传指定变量的内存值作为object的内容
  76. *
  77. * @param OssClient $ossClient OssClient实例
  78. * @param string $bucket 存储空间名称
  79. * @return null
  80. */
  81. public static function putObject($object, $filePath)
  82. {
  83. //$object = "oss-php-sdk-test/upload-test-object-name.txt";
  84. $content = file_get_contents($filePath);
  85. $options = array();
  86. $ossClient = self::getOssClient();
  87. $bucket = self::getBucketName();
  88. try {
  89. $res = $ossClient->putObject($bucket, $object, $content, $options);
  90. } catch (\OssException $e) {
  91. return ['code'=>1, 'msg'=>$e->getMessage(), 'data'=>''];
  92. }
  93. return ['code'=>0, 'msg'=>'操作成功', 'data'=>$res];
  94. }
  95. }