diff --git a/app/api/controller/Common.php b/app/api/controller/Common.php index cf35909..174873f 100644 --- a/app/api/controller/Common.php +++ b/app/api/controller/Common.php @@ -136,4 +136,95 @@ class Common extends ApiController $count = Db::name('DataAuth')->where($map)->count(); return $count; } + + //上传文件 + public function upload() + { + $uid = JWT_UID; + $sourse = 'file'; + if(isset($param['sourse'])){ + $sourse = $param['sourse']; + } + if($sourse == 'file' || $sourse == 'tinymce'){ + if(request()->file('file')){ + $file = request()->file('file'); + } + else{ + $this->apiError('没有选择上传文件'); + } + } + else{ + if (request()->file('editormd-image-file')) { + $file = request()->file('editormd-image-file'); + } else { + $this->apiError('没有选择上传文件'); + } + } + // 获取上传文件的hash散列值 + $sha1 = $file->hash('sha1'); + $md5 = $file->hash('md5'); + $rule = [ + 'image' => 'jpg,png,jpeg,gif', + 'doc' => 'txt,doc,docx,ppt,pptx,xls,xlsx,pdf', + 'file' => 'zip,gz,7z,rar,tar', + 'video' => 'mpg,mp4,mpeg,avi,wmv,mov,flv,m4v', + ]; + $fileExt = $rule['image'] . ',' . $rule['doc'] . ',' . $rule['file'] . ',' . $rule['video']; + //1M=1024*1024=1048576字节 + $fileSize = 100 * 1024 * 1024; + if (isset($param['type']) && $param['type']) { + $fileExt = $rule[$param['type']]; + } + if (isset($param['size']) && $param['size']) { + $fileSize = $param['size']; + } + $validate = \think\facade\Validate::rule([ + 'image' => 'require|fileSize:' . $fileSize . '|fileExt:' . $fileExt, + ]); + $file_check['image'] = $file; + if (!$validate->check($file_check)) { + $this->apiError($validate->getError()); + } + // 日期前綴 + $dataPath = date('Ym'); + $use = 'thumb'; + $filename = \think\facade\Filesystem::disk('public')->putFile($dataPath, $file, function () use ($md5) { + return $md5; + }); + if ($filename) { + //写入到附件表 + $data = []; + $path = get_config('filesystem.disks.public.url'); + $data['filepath'] = $path . '/' . $filename; + $data['name'] = $file->getOriginalName(); + $data['mimetype'] = $file->getOriginalMime(); + $data['fileext'] = $file->extension(); + $data['filesize'] = $file->getSize(); + $data['filename'] = $filename; + $data['sha1'] = $sha1; + $data['md5'] = $md5; + $data['module'] = \think\facade\App::initialize()->http->getName(); + $data['action'] = app('request')->action(); + $data['uploadip'] = app('request')->ip(); + $data['create_time'] = time(); + $data['user_id'] = $uid; + if ($data['module'] = 'admin') { + //通过后台上传的文件直接审核通过 + $data['status'] = 1; + $data['admin_id'] = $data['user_id']; + $data['audit_time'] = time(); + } + $data['use'] = request()->has('use') ? request()->param('use') : $use; //附件用处 + $res['id'] = Db::name('file')->insertGetId($data); + $res['filepath'] = $data['filepath']; + $res['name'] = $data['name']; + $res['filename'] = $data['filename']; + $res['filesize'] = $data['filesize']; + $res['fileext'] = $data['fileext']; + add_log('upload', $data['user_id'], $data,'文件'); + $this->apiSuccess('上传成功', $res); + } else { + $this->apiError('上传失败,请重试'); + } + } }