// +---------------------------------------------------------------------- namespace App\Http\Controllers\Admin\System; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; use App\Http\Controllers\BaseController; class File extends BaseController { /** * @title 上传文件 * * @param Request $request * @return void */ public function upload(Request $request){ $type = $request->input('type', 'images'); try { switch ($type) { case 'avatar': $this->data['data'] = $this->avatar($request); break; case 'images': $this->data['data'] = $this->images($request); break; case 'files': $this->data['data'] = $this->files($request); break; default: $this->data['data'] = $this->images($request); break; } } catch (\Throwable $th) { $this->data['code'] = 0; $this->data['message'] = $th->getMessage(); } return response()->json($this->data); } /** * @title 文件列表 * * @param Request $request * @return void */ public function lists(Request $request){ $path = $request->input('groupId', 'images'); $files = Storage::allFiles($path); $data = []; foreach ($files as $key => $value) { $data[] = [ 'path' => $value, 'url' => Storage::disk()->url($path), 'name'=> explode('/', $value)[2], ]; } $this->data['data'] = ['data' => $data]; return response()->json($this->data); } /** * @title 列表菜单 * * @return void */ public function menu(Request $request){ $file = [ ['id'=> 'images','title'=>'图片', 'children' => []], ['id'=> 'files','title'=>'文件', 'children' => []], ['id'=> 'videos','title'=>'视频', 'children' => []], ['id'=> 'audios','title'=>'音频', 'children' => []], ]; foreach ($file as $key => $value) { $paths = Storage::disk()->allDirectories($value['id']); foreach ($paths as $key => $value) { $file[$key]['children'][] = ['id'=> $value, 'title'=>explode('/', $value)[1]]; } } $this->data['data'] = $file; return response()->json($this->data); } /** * @title 删除文件 * * @return void */ public function delete(Request $request){ return response()->json($this->data); } /** * @title 上传头像 * * @param Request $request * @return void */ protected function avatar(Request $request){ $file = $request->file('file'); if ($file->isValid()) { $ext = $file->extension(); $name = $file->hashName(); $path = $file->store('avatar/'.date('Ymd')); $data = [ 'path' => $path, 'url' => Storage::disk()->url($path), 'src' => Storage::disk()->url($path), 'name'=> $name, 'size'=> $file->getSize(), 'ext' => $ext, ]; return $data; }else{ throw new \Exception('上传失败'); } } protected function images(Request $request){ $file = $request->file('file'); if ($file->isValid()) { $ext = $file->extension(); $name = $file->hashName(); $path = $file->store('images/'.date('Ymd')); $data = [ 'path' => $path, 'url' => Storage::disk()->url($path), 'src' => Storage::disk()->url($path), 'name'=> $name, 'size'=> $file->getSize(), 'ext' => $ext, ]; return $data; }else{ throw new \Exception('上传失败'); } } protected function files(Request $request){ $file = $request->file('file'); if ($file->isValid()) { $ext = $file->extension(); $name = $file->hashName(); $path = $file->store('files/'.date('Ymd')); $data = [ 'path' => $path, 'url' => Storage::disk()->url($path), 'src' => Storage::disk()->url($path), 'name'=> $name, 'size'=> $file->getSize(), 'ext' => $ext, ]; return $data; }else{ throw new \Exception('上传失败'); } } }