提交 732d04c0 编写于 作者: H HFO4

add QiniuAdapter

上级 6593cb7d
<?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"];
......
<?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;
}
}
}
?>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册