qcloudCosChajian.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. /**
  3. * 腾讯云上文件存储上传管理
  4. */
  5. include_once(ROOT_PATH.'/include/cos-php-sdk-v4-master/include.php');
  6. use Qcloud\Cos\Api;
  7. class qcloudCosChajian extends Chajian{
  8. private $bucket = 'xinhuoa';
  9. private $folder = 'defile'; //默认目录
  10. private $region = 'sh'; //默认分区
  11. protected function initChajian()
  12. {
  13. $this->bucket = getconfig('qcloudCos_bucket', $this->bucket);
  14. $this->region = getconfig('qcloudCos_region', $this->region);
  15. $this->folder = getconfig('qcloudCos_folder', $this->folder);
  16. $this->app_id = getconfig('qcloudCos_APPID');
  17. $config = array(
  18. 'app_id' => $this->app_id,
  19. 'secret_id' => getconfig('qcloudCos_SecretId'),
  20. 'secret_key'=> getconfig('qcloudCos_SecretKey'),
  21. 'region' => $this->region,
  22. 'timeout' => 180
  23. );
  24. $this->cosApi = new Api($config);
  25. }
  26. /**
  27. * 上传文件
  28. * filepath 要上传的文件全路径
  29. * updir 上传到哪个目录
  30. * upname 上传后保存文件名
  31. */
  32. public function upload($filepath, $updir='', $upname='')
  33. {
  34. if(!file_exists($filepath))return false;
  35. $filea = explode('/', $filepath);
  36. if($upname=='')$upname = $filea[count($filea)-1];
  37. if($updir=='')$updir = $this->folder;
  38. $ret = $this->cosApi->upload($this->bucket, $filepath, ''.$updir.'/'.$upname.'');
  39. if($ret['code']==0)$ret['url'] = $this->geturl().'/'.$updir.'/'.$upname.'';
  40. return $ret;
  41. }
  42. //上传
  43. public function uploadFile($path)
  44. {
  45. $ret = $this->upload(ROOT_PATH.'/'.$path,'', $path);
  46. if(!$ret)return returnerror();
  47. if(!isset($ret['url']))return returnerror();
  48. $barr = returnsuccess();
  49. $barr['url'] = $ret['url'];
  50. return $barr;
  51. }
  52. /**
  53. * 简单上传要调用
  54. */
  55. public function uploadBase($path)
  56. {
  57. if(getconfig('qcloudCos_autoup')){
  58. return $this->uploadFile($path);
  59. }else{
  60. if(getconfig('alioss_autoup')){
  61. $obj = c('alioss');
  62. if(method_exists($obj, 'uploadFile'))return $obj->uploadFile($path);
  63. }
  64. }
  65. return returnerror();
  66. }
  67. /**
  68. * 创建文件夹
  69. */
  70. public function createFolder($folder)
  71. {
  72. $ret = Cosapi::createFolder($this->bucket, $folder);
  73. return $ret;
  74. }
  75. /**
  76. * 获取目录下的文件
  77. */
  78. public function listFolder($folder='', $num=20)
  79. {
  80. if($folder=='')$folder = $this->folder;
  81. $ret = $this->cosApi->listFolder($this->bucket, $folder, $num);
  82. if($ret['code'] != 0){
  83. return returnerror($ret['message']);
  84. }else{
  85. $barr = returnsuccess($ret['data']['infos']);
  86. $barr['folder'] = $folder;
  87. return $barr;
  88. }
  89. }
  90. /**
  91. * 删除文件
  92. */
  93. public function delFile($path)
  94. {
  95. $ret = $this->cosApi->delFile($this->bucket, $path);
  96. return $ret;
  97. }
  98. public function delListFile()
  99. {
  100. $barr = $this->listFolder('',100);
  101. if($barr['success']){
  102. foreach($barr['data'] as $k=>$rs){
  103. $this->delFile($this->folder.'/'.$rs['name']);
  104. }
  105. }
  106. }
  107. /**
  108. * 下载文件到服务器本地
  109. */
  110. public function download($srcPath, $dstPath)
  111. {
  112. $res = $this->cosApi->download($this->bucket, $srcPath, $dstPath);
  113. return $res;
  114. }
  115. /**
  116. * 获取外网访问地址
  117. */
  118. public function geturl()
  119. {
  120. $xarr['nj'] = 'ap-nanjing';
  121. $xarr['cd'] = 'ap-chengdu';
  122. $xarr['bj'] = 'ap-beijing';
  123. $xarr['gz'] = 'ap-guangzhou';
  124. $xarr['sh'] = 'ap-shanghai';
  125. $xarr['cq'] = 'ap-chongqing';
  126. $xarr['bjfsi'] = 'ap-beijing-fsi';
  127. $xarr['szfsi'] = 'ap-shenzhen-fsi';
  128. $xarr['shfsi'] = 'ap-shanghai-fsi';
  129. $xarr['hk'] = 'ap-hongkong';
  130. $qustr = arrvalue($xarr, $this->region,'ap-shanghai');
  131. $url = 'https://'.$this->bucket.'-'.$this->app_id.'.cos.'.$qustr.'.myqcloud.com';
  132. return $url;
  133. }
  134. }
粤ICP备19079148号