controller(); $action = $request->action(); $appName = app()->http->getName(); trace($appName.'\\controller\\'.$controller.'@'.$action, 'log'); $validateClass = 'app\\' . $appName . '\\validate' . '\\' . ucfirst($controller); $param = $request->isPost() ? $request->post() : $request->get(); trace('post:'.json_encode($request->post()), 'log'); trace('get:'.json_encode($request->get()), 'log'); if (class_exists($validateClass)) { $validateObj = validate($validateClass); if ($validateObj->hasScene($action)) { try { $validateObj->scene($action)->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 return json(['code' => 1, 'msg' => $e->getError()]); } } } // 如果有上传图片,先将地址传到控制器 $files = $_FILES; $method = strtolower($request->method(true)); $requestMethond = 'with' . ucfirst($method); $imgUrlOss = []; if (!empty($files)) { foreach ($files as $key => $f) { if (!empty($f['name'])) { if (is_array($f['name'])) { $p = []; foreach ($f['name'] as $i => $name) { $url = $controller . '/' . uniqid() . '.' . pathinfo($name, PATHINFO_EXTENSION); $imgUrlOss[] = ['tmp_name' => $f['tmp_name'][$i], 'name' => $url]; $p[] = $url; } } else { $p = $controller . '/' . uniqid() . '.' . pathinfo($f['name'], PATHINFO_EXTENSION); $imgUrlOss[] = ['tmp_name' => $f['tmp_name'], 'name' => $p]; } if (method_exists($request, $requestMethond)) { $request->$requestMethond(array_merge($request->$method(), [$key => $p])); } } } } // 恢复内容设置到变量中 $response = $next($request); // 将上传到图片保存 if (!empty($imgUrlOss)) { $accessKeyId = config('app.ali_oss_access_key_id'); $accessKeySecret = config('app.ali_oss_access_key_secret'); $endpoint = config('app.ali_oss_end_point'); $bucket = config('app.ali_oss_bucket'); $oss = new OssClient($accessKeyId, $accessKeySecret, $endpoint); try { foreach ($imgUrlOss as $key => $v) { $oss->uploadFile($bucket, $v['name'], $v['tmp_name']); } } catch (OssException $e) { Log::record('文件上传失败,error:' . $e->getErrorCode(), 'error'); return json(['code' => 1, 'msg' => $e->getErrorMessage()]); } } return $response; } }