thinkphp6文件上传功能\多文件上传\文件验证 方法封装
2022-07-28 14:14:58
264
{{single.collect_count}}

官网文档知识点比较乱, 导致每次写上传都得去翻文档, 现直接写好一个上传方法 用到时直接调用即可, 支持多文件上传, 多文件验证

/** * 文件上传和验证* @author: sudden3<sudden3@foxmail.com>* * @Param: string $filename 文件的参数名 filename* @Param: string $filepath 上传地址 例如 'image/logo'* @Param: string $rule 验证规则 请参照tp文档 https://www.kancloud.cn/manual/thinkphp6_0/1037639* * @Return: array*/public function upload($filename ,$filepath, $rule){$files = request()->file($filename);if (!is_array($files)) {$files = [$files];$isOne = true;}$error = ['code' => 200];foreach($files as $file) {try {validate([$filename => $rule])->check([$filename => $file]);} catch (ValidateException $e) {$error = array('code' => 500, 'msg' => $e->getMessage());break;}}if ($error['code'] === 200) {$fileList = [];foreach($files as $file) {$savename = \think\facade\Filesystem::disk('public')->putFile($filepath, $file);$savename = $this->tranPath($savename, true);$fileList[] = $savename;}if (count($files) === 1 && isset($isOne)) {$fileList = $fileList[0];}return ['code' => 200, 'fileName' => $fileList];}}

使用:

// 调用方法$this->upload('file', 'image/article', 'fileSize:512000|fileExt:jpg,jpeg,png,bmp,webp|image');// 返回: ['code' => 200, 'fileName' => 'image/article/20200927/9a7fb6ef6617c5f1cf3e1e6401f5d1f3.png'];// 支持多文件上传, 多文件上传成功后返回:["code" => 200"fileName" => ["image/article/20200927/9a7fb6ef6617c5f1cf3e1e6401f5d1f3.png","image/article/20200927/d6c789623d0fc9d07338fbf87370e97e.png","image/article/20200927/550941a9bbb06c1decd8b7949fd964af.png"]]
回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}