request->file("file"); switch (system_config("storage_type")) { case 1: $savename = Filesystem::putFile( 'image', $file); $filePath = "/uploads/".$savename; break; case 2: $savename = Filesystem::putFile( 'image', $file); $ext = $file->getOriginalExtension(); $key = '/image/'.date('Ymd')."/".substr(md5($file->getRealPath()) , 0, 5). date('YmdHis') . rand(0, 9999) . '.' . $ext; $filePath = QcloudCoService::put($key, $file->getRealPath()); break; } return Attachment::addAttachment($this->request->param("cid",0),$savename,$filePath,'image',$file->getMime(),$file->getSize(),system_config("storage_type")) ? app("json")->code()->success("上传成功",['filePath'=>$filePath,"name"=>$savename]) : app("json")->fail("上传失败"); } /** * base64转image * @return mixed */ public function baseToImage() { $data = Util::postMore([ ['image',''] ]); if ($data['image'] == '') return app("json")->fail("上传失败,没有文件"); $path = "uploads/image/".date("Ymd").'/'; if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $data['image'], $result)){ $type = $result[2]; if(!file_exists($path)) mkdir($path, 0755,true); $savename = $path.md5(time()).".{$type}"; if (file_put_contents($savename, base64_decode(str_replace($result[1], '', $data['image'])))) return app("json")->success("上传成功",['src'=>"/".$savename]); else return app("json")->fail("上传失败,写入文件失败!"); }else return app("json")->fail("上传失败,图片格式有误!"); } /** * tinymec * @return mixed */ public function tinymce() { $savename = Filesystem::putFile( 'image', request()->file('file')); return json_encode(['location'=>"/uploads/".$savename]); } /** * @单文件上传 * @param string $type 类型 files images documents banners * @return mixed */ public function upload(Request $request) { if($request->isPost()) { // 获取表单上传文件 例如上传了001.jpg $file = $request->file('file');//根据表单name替换imgFile $type = $this->request->post("type"); $type = $type ?:'files'; switch (system_config("storage_type")) { case 1: switch ($type) { case 'files': $fileSize = 10 * 1024 * 1024; $fileExt = 'pdf,doc,docx,png,jpeg,jpg,text,mp4'; break; case 'slides': $fileSize = 10 * 1024 * 1024; $fileExt = 'png,jpeg,jpg'; break; case 'documents': $fileSize = 5 * 1024 * 1024; $fileExt = 'pdf,doc,docx'; break; case 'images': $fileSize = 5 * 1024 * 1024; $fileExt = 'png,jpeg,jpg'; break; case 'avatar': $fileSize = 4 * 1024 * 1024; $fileExt = 'png,jpeg,jpg'; break; default: $fileSize = 0 * 1024 * 1024; $fileExt = 'pdf,doc,docx'; break; } try { // 使用验证器验证上传的文件 validate(['file' => [ // 限制文件大小(单位b),这里限制为5M 'fileSize' => $fileSize, // 限制文件后缀,多个后缀以英文逗号分割 'fileExt' => $fileExt // 更多规则请看“上传验证”的规则,文档地址https://www.kancloud.cn/manual/thinkphp6_0/1037629#_444 ]])->check(['file' => $file]); $savename = Filesystem::putFile( $type, $file); $filePath = "/uploads/".$savename; $res = Attachment::addAttachment($this->request->param("cid",0),basename($savename),$filePath,$type,$file->getMime(),$file->getSize(),system_config("storage_type")); return $res? app("json")->code()->success("上传成功",['filePath'=>$filePath,"name"=>basename($savename)]) : app("json")->fail("上传失败"); } catch (ValidateException $e) { return app("json")->fail($e->getMessage()); } break; case 2: return app("json")->fail('上传失败'); $savename = Filesystem::putFile( 'image', $file); $ext = $file->getOriginalExtension(); $key = '/image/'.date('Ymd')."/".substr(md5($file->getRealPath()) , 0, 5). date('YmdHis') . rand(0, 9999) . '.' . $ext; $filePath = QcloudCoService::put($key, $file->getRealPath()); $res = Attachment::addAttachment($this->request->param("cid",0),basename($savename),$filePath,$type,$file->getMime(),$file->getSize(),system_config("storage_type")); return $res? app("json")->code()->success("上传成功",['filePath'=>$filePath,"name"=>basename($savename)]) : app("json")->fail("上传失败"); break; } }else{ return app("json")->fail('上传失败'); } } }