resourceRepository = $resourceRepositoryEloquent; } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleList(Request $request) { $this->resourceRepository->pushCriteria(new ResourceCriteria($request)); $this->resourceRepository->setPresenter(ResourcePresenter::class); return $this->resourceRepository->searchResourcesByPage(); } /** * @param $id * * @return \Illuminate\Database\Eloquent\Model */ public function handleProfile($id) { $this->resourceRepository->setPresenter(ResourcePresenter::class); return $this->resourceRepository->searchResourceBy($id); } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleStore(Request $request) { $resource = $this->resourceRepository->create($request->all()); return $resource; } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleUpdate(Request $request) { $resource = $this->resourceRepository->update($request->all(), $request->get('id')); return $resource; } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleDelete($id) { return $this->resourceRepository->delete($id); } public function handleUpload(Request $request, $disk = 'public') { // 获取上传的文件 $file = $request->file('file'); if (!$file->isFile()) return false; $type = $request->get('dir', 'default'); $dir = $type; $dir = config('filesystems.dir_prefix', '') . $dir; $dir = str_replace('_', DIRECTORY_SEPARATOR, $dir) . DIRECTORY_SEPARATOR . date('Y-m-d'); $newName = Str::random(32) . '.' . $file->getClientOriginalExtension(); $path = Storage::disk($disk)->putFileAs($dir, $file, $newName); $url = Storage::disk($disk)->url($path); $resource = $this->resourceRepository->create(['name' => $newName, 'original_name' => $file->getClientOriginalName(), 'path' => $path, 'url' => $url, 'disk' => $disk, 'size' => $file->getSize()]); return $resource; } /** * 上传文件 * @param Request $request * @param string $dir * @param array $allow_ext * @return * Author: Mead */ public function upload(Request $request, $dir = '', $allow_ext = [], $disk = 'public') { // 获取上传的文件 $file = $request->file('file'); if (!$file->isFile()) return Response::fail('请上传文件类型', ResponseCodeEnum::CLIENT_VALIDATION_ERROR);; if (!in_array($file->getClientOriginalExtension(), $allow_ext)) { return Response::fail('上传文件的类型不对', ResponseCodeEnum::CLIENT_VALIDATION_ERROR); } $dir = config('filesystems.dir_prefix', '') . $dir . DIRECTORY_SEPARATOR . date('Y-m-d'); $newName = Str::random(32) . ' . ' . $file->getClientOriginalExtension(); $path = Storage::disk($disk)->putFileAs($dir, $file, $newName); $url = Storage::disk($disk)->url($path); return [ 'path' => $path, 'name' => $newName, 'url' => $url, 'original_name' => $file->getClientOriginalName(), 'disk' => $disk, ]; } public function handleBase64ToImg($data, $disk = 'public') { $base64 = $data['base64']; $type = $data['type']; $dir = config('filesystems.dir_prefix', '') . $type; $dir = str_replace('_', DIRECTORY_SEPARATOR, $type) . DIRECTORY_SEPARATOR . date('Y-m-d'); if (strpos($base64, "data:image/jpeg") === 0) { $base64 = str_replace('data:image/jpeg;base64,', '', $base64); $base64 = str_replace(' ', '+', $base64); $file_name = str_random(10) . '.jpeg'; } if (strpos($base64, "data:image/png") === 0) { $base64 = str_replace('data:image/png;base64,', '', $base64); $base64 = str_replace(' ', '+', $base64); $file_name = str_random(10) . '.png'; } $imagePath = $dir . $file_name; Storage::disk($disk)->put($imagePath, base64_decode($base64)); $url = Storage::disk($disk)->url($imagePath); $resource = $this->resourceRepository->create([ 'name' => $file_name, 'original_name' => $file_name, 'path' => $imagePath, 'url' => $url, 'disk' => $disk, 'size' => Storage::disk($disk)->size($imagePath) ]); return [ 'path' => $imagePath, 'name' => $file_name, 'original_name' => $file_name, 'disk' => $disk, 'url' => $url, 'size' => $resource['size'] ]; } }