提交 2b646fb6 编写于 作者: H HFO4

add: RemoteAdapter

上级 e29c94d8
...@@ -58,6 +58,9 @@ class FileManage extends Model{ ...@@ -58,6 +58,9 @@ class FileManage extends Model{
case 's3': case 's3':
$this->adapter = new \app\index\model\S3Adapter($this->fileData,$this->policyData,$this->userData); $this->adapter = new \app\index\model\S3Adapter($this->fileData,$this->policyData,$this->userData);
break; break;
case 'remote':
$this->adapter = new \app\index\model\RemoteAdapter($this->fileData,$this->policyData,$this->userData);
break;
default: default:
# code... # code...
break; break;
...@@ -88,30 +91,6 @@ class FileManage extends Model{ ...@@ -88,30 +91,6 @@ class FileManage extends Model{
die('{ "result": { "success": false, "error": "您当前用户组最大可编辑'.$sizeLimit.'字节的文件"} }'); die('{ "result": { "success": false, "error": "您当前用户组最大可编辑'.$sizeLimit.'字节的文件"} }');
}else{ }else{
$fileContent = $this->adapter->getFileContent(); $fileContent = $this->adapter->getFileContent();
// switch ($this->policyData["policy_type"]) {
// case 'local':
// $filePath = ROOT_PATH . 'public/uploads/' . $this->fileData["pre_name"];
// $fileContent = $this->getLocalFileContent($filePath);
// break;
// case 'qiniu':
// $fileContent = $this->getQiniuFileContent();
// break;
// case 'oss':
// $fileContent = $this->getOssFileContent();
// break;
// case 'upyun':
// $fileContent = $this->getUpyunFileContent();
// break;
// case 's3':
// $fileContent = $this->getS3FileContent();
// break;
// case 'remote':
// $fileContent = $this->getRemoteFileContent();
// break;
// default:
// # code...
// break;
// }
$result["result"] = $fileContent; $result["result"] = $fileContent;
if(empty(json_encode($result))){ if(empty(json_encode($result))){
$result["result"] = iconv('gb2312','utf-8',$fileContent); $result["result"] = iconv('gb2312','utf-8',$fileContent);
...@@ -120,15 +99,6 @@ class FileManage extends Model{ ...@@ -120,15 +99,6 @@ class FileManage extends Model{
} }
} }
/**
* 获取远程策略文本文件内容
*
* @return string 文件内容
*/
public function getRemoteFileContent(){
return file_get_contents($this->remotePreview()[1]);
}
/** /**
* 保存可编辑文件 * 保存可编辑文件
* *
...@@ -142,48 +112,12 @@ class FileManage extends Model{ ...@@ -142,48 +112,12 @@ class FileManage extends Model{
die('{ "result": { "success": false, "error": "空间容量不足" } }'); die('{ "result": { "success": false, "error": "空间容量不足" } }');
} }
$this->adapter->saveContent($content); $this->adapter->saveContent($content);
// switch ($this->policyData["policy_type"]) {
// case 'local':
// $filePath = ROOT_PATH . 'public/uploads/' . $this->fileData["pre_name"];
// file_put_contents($filePath, "");
// file_put_contents($filePath, $content);
// break;
// case 'qiniu':
// $this->saveQiniuContent($content);
// break;
// case 'oss':
// $this->saveOssContent($content);
// break;
// case 'upyun':
// $this->saveUpyunContent($content);
// break;
// case 's3':
// $this->saveS3Content($content);
// break;
// case 'remote':
// $this->saveRemoteContent($content);
// break;
// default:
// # code...
// break;
// }
FileManage::storageGiveBack($this->userID,$originSize); FileManage::storageGiveBack($this->userID,$originSize);
FileManage::storageCheckOut($this->userID,$contentSize); FileManage::storageCheckOut($this->userID,$contentSize);
Db::name('files')->where('id', $this->fileData["id"])->update(['size' => $contentSize]); Db::name('files')->where('id', $this->fileData["id"])->update(['size' => $contentSize]);
echo ('{ "result": { "success": true} }'); echo ('{ "result": { "success": true} }');
} }
/**
* 保存远程文件内容
*
* @param string $content 文件内容
* @return void
*/
public function saveRemoteContent($content){
$remote = new Remote($this->policyData);
$remote->updateContent($this->fileData["pre_name"],$content);
}
/** /**
* 文件名合法性初步检查 * 文件名合法性初步检查
* *
...@@ -358,35 +292,6 @@ class FileManage extends Model{ ...@@ -358,35 +292,6 @@ class FileManage extends Model{
*/ */
public function PreviewHandler($isAdmin=false){ public function PreviewHandler($isAdmin=false){
return $this->adapter->Preview($isAdmin); return $this->adapter->Preview($isAdmin);
// switch ($this->policyData["policy_type"]) {
// case 'qiniu':
// $Redirect = $this->qiniuPreview();
// return $Redirect;
// break;
// case 'local':
// $Redirect = $this->localPreview($isAdmin);
// return $Redirect;
// break;
// case 'oss':
// $Redirect = $this->ossPreview();
// return $Redirect;
// break;
// case 'upyun':
// $Redirect = $this->upyunPreview();
// return $Redirect;
// break;
// case 's3':
// $Redirect = $this->s3Preview();
// return $Redirect;
// break;
// case 'remote':
// $Redirect = $this->remotePreview();
// return $Redirect;
// break;
// default:
// # code...
// break;
// }
} }
/** /**
...@@ -396,30 +301,6 @@ class FileManage extends Model{ ...@@ -396,30 +301,6 @@ class FileManage extends Model{
*/ */
public function getThumb(){ public function getThumb(){
return $this->adapter->getThumb(); return $this->adapter->getThumb();
// switch ($this->policyData["policy_type"]) {
// case 'qiniu':
// $Redirect = $this->getQiniuThumb();
// return $Redirect;
// case 'local':
// $Redirect = $this->getLocalThumb();
// return $Redirect;
// break;
// case 'oss':
// $Redirect = $this->getOssThumb();
// return $Redirect;
// break;
// case 'upyun':
// $Redirect = $this->getUpyunThumb();
// return $Redirect;
// break;
// case 'remote':
// $remote = new Remote($this->policyData);
// return [1,$remote->thumb($this->fileData["pre_name"],explode(",",$this->fileData["pic_info"]))];
// break;
// default:
// # code...
// break;
// }
} }
/** /**
...@@ -430,29 +311,6 @@ class FileManage extends Model{ ...@@ -430,29 +311,6 @@ class FileManage extends Model{
*/ */
public function Download($isAdmin=false){ public function Download($isAdmin=false){
return $this->adapter->Download($isAdmin); return $this->adapter->Download($isAdmin);
// switch ($this->policyData["policy_type"]) {
// case 'qiniu':
// return $DownloadHandler = $this->qiniuDownload();
// break;
// case 'local':
// return $DownloadHandler = $this->localDownload($isAdmin);
// break;
// case 'oss':
// return $DownloadHandler = $this->ossDownload();
// break;
// case 'upyun':
// return $DownloadHandler = $this->upyunDownload();
// break;
// case 's3':
// return $DownloadHandler = $this->s3Download();
// break;
// case 'remote':
// return $DownloadHandler = $this->remoteDownload();
// break;
// default:
// # code...
// break;
// }
} }
/** /**
...@@ -572,7 +430,8 @@ class FileManage extends Model{ ...@@ -572,7 +430,8 @@ class FileManage extends Model{
S3Adapter::DeleteFile($value,$uniquePolicy["s3PolicyData"][$key][0]); S3Adapter::DeleteFile($value,$uniquePolicy["s3PolicyData"][$key][0]);
self::deleteFileRecord(array_column($value, 'id'),array_sum(array_column($value, 'size')),$value[0]["upload_user"]); self::deleteFileRecord(array_column($value, 'id'),array_sum(array_column($value, 'size')),$value[0]["upload_user"]);
}else if(in_array($key,$uniquePolicy["remoteList"])){ }else if(in_array($key,$uniquePolicy["remoteList"])){
self::remoteDelete($value,$uniquePolicy["remotePolicyData"][$key][0]); RemoteAdapter::DeleteFile($value,$uniquePolicy["remotePolicyData"][$key][0]);
self::deleteFileRecord(array_column($value, 'id'),array_sum(array_column($value, 'size')),$value[0]["upload_user"]);
} }
} }
return ["result"=>["success"=>true,"error"=>null]]; return ["result"=>["success"=>true,"error"=>null]];
...@@ -644,12 +503,6 @@ class FileManage extends Model{ ...@@ -644,12 +503,6 @@ class FileManage extends Model{
} }
static function remoteDelete($fileList,$policyData){
$remoteObj = new Remote($policyData);
$remoteObj->remove(array_column($fileList, 'pre_name'));
self::deleteFileRecord(array_column($fileList, 'id'),array_sum(array_column($fileList, 'size')),$fileList[0]["upload_user"]);
}
static function deleteFileRecord($id,$size,$uid){ static function deleteFileRecord($id,$size,$uid){
Db::name('files')->where([ Db::name('files')->where([
'id' => ["in",$id], 'id' => ["in",$id],
...@@ -664,16 +517,6 @@ class FileManage extends Model{ ...@@ -664,16 +517,6 @@ class FileManage extends Model{
])->setDec('used_storage', $size); ])->setDec('used_storage', $size);
} }
public function remotePreview(){
$remote = new Remote($this->policyData);
return [1,$remote->preview($this->fileData["pre_name"])];
}
private function remoteDownload(){
$remote = new Remote($this->policyData);
return [1,$remote->download($this->fileData["pre_name"],$this->fileData["orign_name"])];
}
/** /**
* [List description] * [List description]
* @param [type] $path [description] * @param [type] $path [description]
...@@ -945,33 +788,6 @@ class FileManage extends Model{ ...@@ -945,33 +788,6 @@ class FileManage extends Model{
public function signTmpUrl(){ public function signTmpUrl(){
return $this->adapter->signTmpUrl()[1]; return $this->adapter->signTmpUrl()[1];
// switch ($this->policyData["policy_type"]) {
// case 'qiniu':
// return $this->qiniuPreview()[1];
// break;
// case 'oss':
// return $this->ossPreview()[1];
// break;
// case 'upyun':
// return $this->upyunPreview()[1];
// break;
// case 's3':
// return $this->s3Preview()[1];
// break;
// case 'local':
// $options = Option::getValues(["oss","basic"]);
// $timeOut = $options["timeout"];
// $delayTime = time()+$timeOut;
// $key=$this->fileData["id"].":".$delayTime.":".md5($this->userData["user_pass"].$this->fileData["id"].$delayTime.config("salt"));
// return $options['siteURL']."Callback/TmpPreview/key/".$key;
// break;
// case 'remote':
// return $this->remotePreview()[1];
// break;
// default:
// # code...
// break;
// }
} }
} }
......
<?php
namespace app\index\model;
use think\Model;
use think\Db;
use \app\index\model\Option;
/**
* 远程策略文件管理适配器
*/
class RemoteAdapter 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
*
* @return void
*/
public function Preview(){
$remote = new Remote($this->policyModel);
return [1,$remote->preview($this->fileModel["pre_name"])];
}
/**
* 保存文件内容
*
* @param string $content 文件内容
* @return bool
*/
public function saveContent($content){
$remote = new Remote($this->policyModel);
$remote->updateContent($this->fileModel["pre_name"],$content);
}
/**
* 获取缩略图地址
*
* @return string 缩略图地址
*/
public function getThumb(){
$remote = new Remote($this->policyModel);
return [1,$remote->thumb($this->fileModel["pre_name"],explode(",",$this->fileModel["pic_info"]))];
}
/**
* 删除某一策略下的指定文件
*
* @param array $fileList 待删除文件的数据库记录
* @param array $policyData 待删除文件的上传策略信息
* @return void
*/
static function deleteFile($fileList,$policyData){
$remoteObj = new Remote($policyData);
$remoteObj->remove(array_column($fileList, 'pre_name'));
}
/**
* 生成文件下载URL
*
* @return array
*/
public function Download(){
$remote = new Remote($this->policyModel);
return [1,$remote->download($this->fileModel["pre_name"],$this->fileModel["orign_name"])];
}
/**
* 签名临时URL用于Office预览
*
* @return array
*/
public function signTmpUrl(){
return $this->Preview();
}
}
?>
\ No newline at end of file
<?php <?php
namespace Krizalys\Onedrive; namespace Krizalys\Onedrive;
/** /**
* @class Client * @class Client
* *
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册