request->server("HTTP_SID")); } parent::_initialize(); } /** * 加载初始化 * * @ApiParams (name="version", type="string", required=true, description="版本号") */ public function init() { if ($version = $this->request->request('version')) { //配置信息 $upload = Config::get('upload'); $uploaddata = []; $uploaddata['cdnurl'] = $upload['cdnurl'] ?: cdnurl('', true); $uploaddata['uploadurl'] = url('/api/common/upload', '', false, true); $content = [ 'versiondata' => Version::check($version), 'uploaddata' => $uploaddata, ]; $this->success('', $content); } else { $this->error(__('Invalid parameters')); } } /** * 上传文件 * @ApiMethod (POST) * @ApiParams (name="file", type="file", required=true, description="文件流") */ public function upload() { Config::set('default_return_type', 'json'); //必须设定cdnurl为空,否则cdnurl函数计算错误 Config::set('upload.cdnurl', ''); $chunkid = $this->request->post("chunkid"); if ($chunkid) { if (!Config::get('upload.chunking')) { $this->error(__('Chunk file disabled')); } $action = $this->request->post("action"); $chunkindex = $this->request->post("chunkindex/d"); $chunkcount = $this->request->post("chunkcount/d"); $filename = $this->request->post("filename"); $method = $this->request->method(true); if ($action == 'merge') { $attachment = null; //合并分片文件 try { $upload = new Upload(); $attachment = $upload->merge($chunkid, $chunkcount, $filename); } catch (UploadException $e) { $this->error($e->getMessage()); } $this->success(__('Uploaded successful'), $attachment->getBaseData()); } elseif ($method == 'clean') { //删除冗余的分片文件 try { $upload = new Upload(); $upload->clean($chunkid); } catch (UploadException $e) { $this->error($e->getMessage()); } $this->success(); } else { //上传分片文件 //默认普通上传文件 $file = $this->request->file('file'); try { $upload = new Upload($file); $upload->chunk($chunkid, $chunkindex, $chunkcount); } catch (UploadException $e) { $this->error($e->getMessage()); } $this->success(); } } else { $attachment = null; //默认普通上传文件 $file = $this->request->file('file'); try { $upload = new Upload($file); $attachment = $upload->upload(); } catch (UploadException $e) { $this->error($e->getMessage()); } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success(__('Uploaded successful'), $attachment->getBaseData()); } } /** * 验证码 * @ApiParams (name="id", type="string", required=true, description="要生成验证码的标识") * @return \think\Response */ public function captcha($id = "") { \think\Config::set([ 'captcha' => array_merge(config('captcha'), [ 'fontSize' => 44, 'imageH' => 150, 'imageW' => 350, ]) ]); $captcha = new Captcha((array)Config::get('captcha')); return $captcha->entry($id); } }