model = new \app\model\Files(); } function list(Request $request) { $list = $this->model->paginate(); return $this->success(__('successful'),$list); } function felist(Request $request) { $list = $this->model->paginate(); $result = []; $list->each(function($item)use(&$result){ array_push($result,[ 'tag' => "test", 'name' => $item["origin_name"], //'thumb'=> $item["file_url"], 'url' => $item["file_url"], ]); }); return json($result); } function feupload(Request $request): Response { $savePath = $request->post('savePath','files'); $data = $this->base($request, $savePath); return json([ 'link' => $data['file_url'], ]); } function upload(Request $request): Response { $savePath = $request->post('savePath','files'); $data = []; try{ $data = $this->base($request, $savePath); }catch(\Exception $e){ return $this->fail( $e->getMessage()); log_alert($e->getMessage()); } return $this->success( '上传成功', $data); } /** * 获取上传数据 * @param Request $request * @param $savePath 保存位置 * @return array * @throws \Exception */ protected function base(Request $request, $savePath): mixed { // 适配器 local默认是存储在runtime目录下 public默认是存储在public目录下 // 可访问的静态文件建议public // 默认适配器是local //Storage::adapter('public'); $validate = Validate::rule('savePath', 'alphaNum'); $data = ['savePath' => $savePath]; if (!$validate->check($data)) { throw new Exception( '参数错误:'.$validate->getError()); } $savePath = trim($savePath,'/'); //$savePath = 'upload/'.$savePath; //$savePath = $savePath; $file = current($request->file()); if (!$file || !$file->isValid()) { throw new Exception( '未找到文件'); } $mimetype = explode(',',Config('site.upload_mimetype')); $maxsize = Config('site.upload_maxsize')*1024*1024; $result = Storage::adapter('oss') ->path($savePath) ->size($maxsize) //->extYes($mimetype) ->upload($file); $save_datas = [ 'admin_id' => admin_id(), 'category' => 'default', 'adapter' => $result->adapter, 'origin_name' => $result->origin_name, 'file_name' => $result->file_name, 'size' => $result->size, 'mime_type' => $result->mime_type, 'extension' => $result->extension, 'file_height' => $result->file_height, 'file_width' => $result->file_width, 'file_url' => $result->file_url, 'sha1' => $result->storage_key ?:sha1_file(public_path($result->file_name)), 'use_count' => 0, ]; return \app\model\Files::create($save_datas); } }