From 732d04c0a7454b43cb06556b43703ba44c3b4631 Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Fri, 7 Sep 2018 19:46:54 +0800 Subject: [PATCH] add QiniuAdapter --- application/index/model/FileManage.php | 87 +------------- application/index/model/LocalAdapter.php | 5 + application/index/model/QiniuAdapter.php | 137 +++++++++++++++++++++++ 3 files changed, 148 insertions(+), 81 deletions(-) create mode 100644 application/index/model/QiniuAdapter.php diff --git a/application/index/model/FileManage.php b/application/index/model/FileManage.php index 64d7aac3..3b4bae2f 100644 --- a/application/index/model/FileManage.php +++ b/application/index/model/FileManage.php @@ -1,12 +1,9 @@ adapter = new \app\index\model\LocalAdapter($this->fileData,$this->policyData,$this->userData); break; - + case 'qiniu': + $this->adapter = new \app\index\model\QiniuAdapter($this->fileData,$this->policyData,$this->userData); + break; default: # code... break; @@ -116,16 +115,6 @@ class FileManage extends Model{ } } - - /** - * 获取七牛策略文本文件内容 - * - * @return string 文件内容 - */ - public function getQiniuFileContent(){ - return file_get_contents($this->qiniuPreview()[1]); - } - /** * 获取OSS策略文本文件内容 * @@ -206,26 +195,6 @@ class FileManage extends Model{ echo ('{ "result": { "success": true} }'); } - /** - * 保存七牛文件内容 - * - * @param string $content 文件内容 - * @return bool - */ - public function saveQiniuContent($content){ - $auth = new Auth($this->policyData["ak"], $this->policyData["sk"]); - $expires = 3600; - $keyToOverwrite = $this->fileData["pre_name"]; - $upToken = $auth->uploadToken($this->policyData["bucketname"], $keyToOverwrite, $expires, null, true); - $uploadMgr = new \Qiniu\Storage\UploadManager(); - list($ret, $err) = $uploadMgr->put($upToken, $keyToOverwrite, $content); - if ($err !== null) { - die('{ "result": { "success": false, "error": "编辑失败" } }'); - } else { - return true; - } - } - /** * 保存OSS文件内容 * @@ -659,7 +628,8 @@ class FileManage extends Model{ } foreach ($fileListTemp as $key => $value) { if(in_array($key,$uniquePolicy["qiniuList"])){ - self::qiniuDelete($value,$uniquePolicy["qiniuPolicyData"][$key][0]); + QiniuAdapter::DeleteFile($value,$uniquePolicy["qiniuPolicyData"][$key][0]); + self::deleteFileRecord(array_column($value, 'id'),array_sum(array_column($value, 'size')),$value[0]["upload_user"]); }else if(in_array($key,$uniquePolicy["localList"])){ LocalAdapter::DeleteFile($value,$uniquePolicy["localPolicyData"][$key][0]); self::deleteFileRecord(array_column($value, 'id'),array_sum(array_column($value, 'size')),$value[0]["upload_user"]); @@ -742,23 +712,6 @@ class FileManage extends Model{ } - /** - * 删除某一策略下的指定七牛文件 - * - * @param array $fileList 待删除文件的数据库记录 - * @param array $policyData 待删除文件的上传策略信息 - * @return void - */ - static function qiniuDelete($fileList,$policyData){ - $auth = new Auth($policyData["ak"], $policyData["sk"]); - $config = new \Qiniu\Config(); - $bucketManager = new \Qiniu\Storage\BucketManager($auth); - $fileListTemp = array_column($fileList, 'pre_name'); - $ops = $bucketManager->buildBatchDelete($policyData["bucketname"], $fileListTemp); - list($ret, $err) = $bucketManager->batch($ops); - self::deleteFileRecord(array_column($fileList, 'id'),array_sum(array_column($fileList, 'size')),$fileList[0]["upload_user"]); - } - /** * 删除某一策略下的指定OSS文件 * @@ -847,10 +800,6 @@ class FileManage extends Model{ } } - public function getQiniuThumb(){ - return $this->qiniuPreview("?imageView2/2/w/90/h/39"); - } - private function getUpyunThumb(){ $picInfo = explode(",",$this->fileData["pic_info"]); $thumbSize = self::getThumbSize($picInfo[0],$picInfo[1]); @@ -892,18 +841,6 @@ class FileManage extends Model{ } } - public function qiniuPreview($thumb=null){ - if(!$this->policyData['bucket_private']){ - $fileUrl = $this->policyData["url"].$this->fileData["pre_name"].$thumb; - return[true,$fileUrl]; - }else{ - $auth = new Auth($this->policyData["ak"], $this->policyData["sk"]); - $baseUrl = $this->policyData["url"].$this->fileData["pre_name"].$thumb; - $signedUrl = $auth->privateDownloadUrl($baseUrl); - return[true,$signedUrl]; - } - } - public function ossPreview(){ if(!$this->policyData['bucket_private']){ $fileUrl = $this->policyData["url"].$this->fileData["pre_name"]; @@ -1142,7 +1079,7 @@ class FileManage extends Model{ static function deleteFile($fname,$policy){ switch ($policy['policy_type']) { case 'qiniu': - return self::deleteQiniuFile($fname,$policy); + return QiniuAdapter::deleteSingle($fname,$policy); break; case 'oss': return self::deleteOssFile($fname,$policy); @@ -1159,18 +1096,6 @@ class FileManage extends Model{ } } - static function deleteQiniuFile($fname,$policy){ - $auth = new Auth($policy["ak"], $policy["sk"]); - $config = new \Qiniu\Config(); - $bucketManager = new \Qiniu\Storage\BucketManager($auth); - $err = $bucketManager->delete($policy["bucketname"], $fname); - if ($err) { - return false; - }else{ - return true; - } - } - static function deleteOssFile($fname,$policy){ $accessKeyId = $policy["ak"]; $accessKeySecret = $policy["sk"]; diff --git a/application/index/model/LocalAdapter.php b/application/index/model/LocalAdapter.php index c1129a6c..e328ec3f 100644 --- a/application/index/model/LocalAdapter.php +++ b/application/index/model/LocalAdapter.php @@ -374,6 +374,11 @@ class LocalAdapter extends Model{ } } + /** + * 签名临时直链,用于Office365预览 + * + * @return array + */ public function signTmpUrl(){ $options = Option::getValues(["oss","basic"]); $timeOut = $options["timeout"]; diff --git a/application/index/model/QiniuAdapter.php b/application/index/model/QiniuAdapter.php new file mode 100644 index 00000000..cc3fcb4b --- /dev/null +++ b/application/index/model/QiniuAdapter.php @@ -0,0 +1,137 @@ +fileModel = $file; + $this->policyModel = $policy; + $this->userModel = $user; + } + + /** + * 获取文本文件内容 + * + * @return string 文件内容 + */ + public function getFileContent(){ + return file_get_contents($this->Preview()[1]); + } + + /** + * 签名七牛文件预览URL + * + * @param string $thumb 缩略图参数 + * @return void + */ + public function Preview($thumb=null){ + if(!$this->policyModel['bucket_private']){ + $fileUrl = $this->policyModel["url"].$this->fileModel["pre_name"].$thumb; + return[true,$fileUrl]; + }else{ + $auth = new Auth($this->policyModel["ak"], $this->policyModel["sk"]); + $baseUrl = $this->policyModel["url"].$this->fileModel["pre_name"].$thumb; + $signedUrl = $auth->privateDownloadUrl($baseUrl); + return[true,$signedUrl]; + } + } + + /** + * 保存七牛文件内容 + * + * @param string $content 文件内容 + * @return bool + */ + public function saveContent($content){ + $auth = new Auth($this->policyModel["ak"], $this->policyModel["sk"]); + $expires = 3600; + $keyToOverwrite = $this->fileModel["pre_name"]; + $upToken = $auth->uploadToken($this->policyModel["bucketname"], $keyToOverwrite, $expires, null, true); + $uploadMgr = new \Qiniu\Storage\UploadManager(); + list($ret, $err) = $uploadMgr->put($upToken, $keyToOverwrite, $content); + if ($err !== null) { + die('{ "result": { "success": false, "error": "编辑失败" } }'); + } else { + return true; + } + } + + /** + * 获取缩略图地址 + * + * @return string 缩略图地址 + */ + public function getThumb(){ + return $this->Preview("?imageView2/2/w/90/h/39"); + } + +/** + * 删除某一策略下的指定七牛文件 + * + * @param array $fileList 待删除文件的数据库记录 + * @param array $policyData 待删除文件的上传策略信息 + * @return void + */ + static function deleteFile($fileList,$policyData){ + $auth = new Auth($policyData["ak"], $policyData["sk"]); + $config = new \Qiniu\Config(); + $bucketManager = new \Qiniu\Storage\BucketManager($auth); + $fileListTemp = array_column($fileList, 'pre_name'); + $ops = $bucketManager->buildBatchDelete($policyData["bucketname"], $fileListTemp); + list($ret, $err) = $bucketManager->batch($ops); + } + + /** + * 生成文件下载URL + * + * @return array + */ + public function Download(){ + if(!$this->policyModel['bucket_private']){ + $fileUrl = $this->policyModel["url"].$this->fileModel["pre_name"]."?attname=".urlencode($this->fileModel["orign_name"]); + return[true,$fileUrl]; + }else{ + $auth = new Auth($this->policyModel["ak"], $this->policyModel["sk"]); + $baseUrl = $this->policyModel["url"].$this->fileModel["pre_name"]."?attname=".urlencode($this->fileModel["orign_name"]); + $signedUrl = $auth->privateDownloadUrl($baseUrl); + return[true,$signedUrl]; + } + } + + /** + * 删除临时文件 + * + * @param string $fname 文件名 + * @param array $policy 上传策略信息 + * @return void + */ + static function deleteSingle($fname,$policy){ + $auth = new Auth($policy["ak"], $policy["sk"]); + $config = new \Qiniu\Config(); + $bucketManager = new \Qiniu\Storage\BucketManager($auth); + $err = $bucketManager->delete($policy["bucketname"], $fname); + if ($err) { + return false; + }else{ + return true; + } + } + +} + +?> \ No newline at end of file