...
|
...
|
@@ -14,7 +14,7 @@ use think\Config; |
|
|
*/
|
|
|
class Common extends Api
|
|
|
{
|
|
|
protected $noNeedLogin = ['init','getTree'];
|
|
|
protected $noNeedLogin = ['init','getTree','upload_base64','base64_image_content'];
|
|
|
protected $noNeedRight = '*';
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -202,5 +202,129 @@ class Common extends Api |
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* base64上传文件
|
|
|
*
|
|
|
* @ApiTitle (base64上传文件)
|
|
|
* @ApiSummary (base64上传文件)
|
|
|
* @ApiMethod (POST)
|
|
|
* @ApiRoute (/api/common/upload_base64)
|
|
|
* @ApiParams (name="base64_img", type="string", required=true, description="图片base64数据")
|
|
|
* @ApiReturnParams (name="code", type="integer", required=true, sample="0")
|
|
|
* @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
|
|
|
* @ApiReturn ({
|
|
|
'code':'1',
|
|
|
'msg':'返回成功',
|
|
|
"data": {
|
|
|
"url": 当前页数,
|
|
|
"priview_url": 总页数
|
|
|
}
|
|
|
})
|
|
|
*
|
|
|
*/
|
|
|
public function upload_base64() {
|
|
|
if($this->request->isPost()) {
|
|
|
$param = $this->request->param();
|
|
|
$validate = new \think\Validate([
|
|
|
'base64_img' => 'require',
|
|
|
]);
|
|
|
$validate->message([
|
|
|
'base64_img.require' => '缺少图片base64数据!',
|
|
|
]);
|
|
|
if (!$validate->check($param)) {
|
|
|
$this->error($validate->getError());
|
|
|
}
|
|
|
$path = '/uploads/lesson_app';
|
|
|
$image = $this->base64_image_content($param['base64_img'],$path);
|
|
|
if(!$image) {
|
|
|
$this->error('上传失败');
|
|
|
}
|
|
|
$upload = Config::get('upload');
|
|
|
$config = get_addon_config('qiniu');
|
|
|
$filePath = '.'.$path.'/'.$image;
|
|
|
$suffix = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));
|
|
|
$suffix = $suffix && preg_match("/^[a-zA-Z0-9]+$/", $suffix) ? $suffix : 'file';
|
|
|
$replaceArr = [
|
|
|
'{year}' => date("Y"),
|
|
|
'{mon}' => date("m"),
|
|
|
'{day}' => date("d"),
|
|
|
'{hour}' => date("H"),
|
|
|
'{min}' => date("i"),
|
|
|
'{sec}' => date("s"),
|
|
|
'{random}' => Random::alnum(16),
|
|
|
'{random32}' => Random::alnum(32),
|
|
|
'{filename}' => $suffix ? substr(pathinfo($filePath)['basename'], 0, strripos(pathinfo($filePath)['basename'], '.')) : pathinfo($filePath)['basename'],
|
|
|
'{suffix}' => $suffix,
|
|
|
'{.suffix}' => $suffix ? '.' . $suffix : '',
|
|
|
'{filemd5}' => md5_file(realpath($filePath)),
|
|
|
];
|
|
|
$savekey = $upload['savekey'];
|
|
|
$savekey = str_replace(array_keys($replaceArr), array_values($replaceArr), $savekey);
|
|
|
$fileName = substr($savekey, strripos($savekey, '/') + 1);
|
|
|
$policy = array(
|
|
|
'saveKey' => ltrim($savekey, '/'),
|
|
|
);
|
|
|
$auth = new Auth($config['app_key'], $config['secret_key']);
|
|
|
$token = $auth->uploadToken($config['bucket'], null, $config['expire'], $policy);
|
|
|
$multipart = [
|
|
|
['name' => 'token', 'contents' => $token],
|
|
|
[
|
|
|
'name' => 'file',
|
|
|
'contents' => fopen(realpath($filePath), 'r'),
|
|
|
'filename' => $fileName,
|
|
|
]
|
|
|
];
|
|
|
try {
|
|
|
$client = new \GuzzleHttp\Client();
|
|
|
$res = $client->request('POST', $config['uploadurl'], [
|
|
|
'multipart' => $multipart
|
|
|
]);
|
|
|
$code = $res->getStatusCode();
|
|
|
//成功不做任何操作
|
|
|
} catch (\GuzzleHttp\Exception\ClientException $e) {
|
|
|
// $attachment->delete();
|
|
|
unlink($filePath);
|
|
|
$this->error("上传失败");
|
|
|
}
|
|
|
unlink($filePath);
|
|
|
$return = [
|
|
|
'url' => $savekey,
|
|
|
'priview_url' => cdnurl($savekey,true)
|
|
|
];
|
|
|
$this->success('上传成功',$return);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [将Base64图片转换为本地图片并保存]
|
|
|
* @E-mial wuliqiang_aa@163.com
|
|
|
* @TIME 2017-04-07
|
|
|
* @WEB http://blog.iinu.com.cn
|
|
|
* @param [Base64] $base64_image_content [要保存的Base64]
|
|
|
* @param [目录] $path [要保存的路径]
|
|
|
*/
|
|
|
private function base64_image_content($base64_image_content,$path){
|
|
|
//匹配出图片的格式
|
|
|
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
|
|
|
$type = $result[2];
|
|
|
$file_path = date('Ymd',time())."/";
|
|
|
$new_file = '.'.$path."/".$file_path;
|
|
|
if(!file_exists($new_file)){
|
|
|
//检查是否有该文件夹,如果没有就创建,并给予最高权限
|
|
|
mkdir($new_file, 0777,true);
|
|
|
}
|
|
|
$new_file = $new_file.time().".{$type}";
|
|
|
if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
|
|
|
return $file_path.time().".{$type}";
|
|
|
}else{
|
|
|
return false;
|
|
|
}
|
|
|
}else{
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} |
...
|
...
|
|