add QiniuAdapter
This commit is contained in:
parent
6593cb7de9
commit
732d04c0a7
3 changed files with 148 additions and 81 deletions
|
@ -1,12 +1,9 @@
|
|||
<?php
|
||||
namespace app\index\model;
|
||||
|
||||
require_once 'extend/Qiniu/functions.php';
|
||||
|
||||
use think\Model;
|
||||
use think\Db;
|
||||
use think\Validate;
|
||||
use Qiniu\Auth;
|
||||
use \app\index\model\Option;
|
||||
use OSS\OssClient;
|
||||
use OSS\Core\OssException;
|
||||
|
@ -53,7 +50,9 @@ class FileManage extends Model{
|
|||
case 'local':
|
||||
$this->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"];
|
||||
|
|
|
@ -374,6 +374,11 @@ class LocalAdapter extends Model{
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 签名临时直链,用于Office365预览
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function signTmpUrl(){
|
||||
$options = Option::getValues(["oss","basic"]);
|
||||
$timeOut = $options["timeout"];
|
||||
|
|
137
application/index/model/QiniuAdapter.php
Normal file
137
application/index/model/QiniuAdapter.php
Normal file
|
@ -0,0 +1,137 @@
|
|||
<?php
|
||||
namespace app\index\model;
|
||||
|
||||
use think\Model;
|
||||
use think\Db;
|
||||
|
||||
require_once 'extend/Qiniu/functions.php';
|
||||
use Qiniu\Auth;
|
||||
|
||||
use \app\index\model\Option;
|
||||
|
||||
/**
|
||||
* 七牛策略文件管理适配器
|
||||
*/
|
||||
class QiniuAdapter extends Model{
|
||||
|
||||
private $fileModel;
|
||||
private $policyModel;
|
||||
private $userModel;
|
||||
|
||||
public function __construct($file,$policy,$user){
|
||||
$this->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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
Loading…
Add table
Reference in a new issue