| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | <?php// +----------------------------------------------------------------------// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]// +----------------------------------------------------------------------// | Copyright (c) 2013-2018 http://www.thinkcmf.com All rights reserved.// +----------------------------------------------------------------------// | Author: Dean <zxxjjforever@163.com>// +----------------------------------------------------------------------namespace plugins\qiniu\controller; //Demo插件英文名,改成你的插件英文就行了use cmf\controller\PluginBaseController;use plugins\qiniu\lib\Qiniu;use think\Validate;use think\Db;use Qiniu\Auth;use Qiniu\Storage\UploadManager;use Qiniu\Http\Client;class AssetController extends PluginBaseController{    function getUrl()    {        $qiniu = new Qiniu([]);        $fileHash = $this->request->param('file_hash');        $filname  = $this->request->param('filename');        $fileType = $this->request->param('filetype');        $suffix = cmf_get_file_extension($filname);        $file = $fileHash . ".{$suffix}";        $previewUrl = $fileType == 'image' ? $qiniu->getPreviewUrl($file) : $qiniu->getFileDownloadUrl($file);        $url        = $fileType == 'image' ? $qiniu->getImageUrl($file, 'watermark') : $qiniu->getFileDownloadUrl($file);        return $this->success('success', null, [            'url'         => $url,            'preview_url' => $previewUrl,            'filepath'    => $file        ]);    }    public function saveFile()    {        $userId = cmf_get_current_admin_id();        $userId = $userId ? $userId : cmf_get_current_user_id();        if (empty($userId)) {            $this->error('error');        }        $validate = new Validate([            'filename' => 'require',            'file_key' => 'require',        ]);        $data = $this->request->param();        $result = $validate->check($data);        if ($result !== true) {            $this->error($validate);        }        $fileKey = $data['file_key'];        $suffix = cmf_get_file_extension($data['filename']);        $config = $this->getPlugin()->getConfig();        $accessKey = $config['accessKey'];        $secretKey = $config['secretKey'];        $auth = new Auth($accessKey, $secretKey);        $client = new Client();        $encodedEntryURISrc  = \Qiniu\base64_urlSafeEncode($config['bucket'] . ':' . $fileKey);        $encodedEntryURIDest = \Qiniu\base64_urlSafeEncode($config['bucket'] . ':' . $fileKey . ".{$suffix}");        $signingStr    = "/move/{$encodedEntryURISrc}/{$encodedEntryURIDest}";        $authorization = $auth->signRequest($signingStr, '');        $url = 'http://rs.qiniu.com/' . $signingStr;        $response = $client->post($url, null, ['Authorization' => 'QBox ' . $authorization]);        if ($response->statusCode == 612) {            $this->error('文件不存在!');        }        if ($response->statusCode == 599) {            $this->error('文件保存失败!');        }        $signingStr    = "/stat/{$encodedEntryURIDest}";        $authorization = $auth->signRequest($signingStr, '');        $url = 'http://rs.qiniu.com/' . $signingStr;        $response = $client->get($url, ['Authorization' => 'QBox ' . $authorization]);        if ($response->statusCode != 200) {            $this->error('操作失败!');        }        $fileInfo = $response->json();        $findAsset = Db::name('asset')->where('file_key', $fileKey)->find();        if (empty($findAsset)) {            Db::name('asset')->insert([                'user_id'     => $userId,                'file_size'   => $fileInfo['fsize'],                'filename'    => $data['filename'],                'create_time' => time(),                'file_key'    => $fileKey,                'file_path'   => $fileKey . ".{$suffix}",                'suffix'      => $suffix            ]);        }        $this->success('success');    }}
 |