1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace App\Http\Controllers\Api\Base;
- use App\Http\Controllers\Controller;
- use App\Repositories\Enums\ResponseCodeEnum;
- use App\Services\Base\UserService;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Storage;
- /**
- * 公共管理
- */
- class CommonController extends Controller
- {
- /**
- * UserController constructor.
- *
- * @param UserService $userService
- */
- public function __construct()
- {
- parent::__construct();
- }
- /**
- * 上传资源
- * @must
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Illuminate\Validation\ValidationException
- */
- public function upload(Request $request)
- {
- $this->validate($request, [
- 'file' => 'required|file',
- 'dir' => 'required|alpha_dash',
- 'file_type' => 'required|in:img,file'
- ], [], [
- 'file' => '文件',
- 'dir' => '存放目录',
- 'file_type' => '文件类型',
- ]);
- $file = $request->file('file');
- if (!$file->isFile()) {
- return $this->response->fail('请上传一个文件', ResponseCodeEnum::CLIENT_VALIDATION_ERROR);
- }
- $file_type = $request->get('file_type', 'img');
- if ($file_type === 'img') {
- // 如果上传的不是图片将终止操作
- $config = str2arr(byCodeGetSetting($this->allowed_img_ext));
- if (!is_array($config)) {
- abort(ResponseCodeEnum::SYSTEM_CONFIG_ERROR, '系统图片配置错误');
- }
- if (!in_array(strtolower($file->getClientOriginalExtension()), $config)) {
- return $this->response->fail('图片类型不合法', ResponseCodeEnum::CLIENT_VALIDATION_ERROR);
- }
- } else {
- $config = str2arr(byCodeGetSetting($this->allowed_file_ext));
- if (!is_array($config)) {
- abort(ResponseCodeEnum::SYSTEM_CONFIG_ERROR, '系统文件配置错误');
- }
- if (!in_array(strtolower($file->getClientOriginalExtension()), $config)) {
- return $this->response->fail('文件类型不合法', ResponseCodeEnum::CLIENT_VALIDATION_ERROR);
- }
- }
- $model = $this->resourceService->handleUpload($request);
- if (!$model) {
- return $this->response->fail('上传文件失败', ResponseCodeEnum::SYSTEM_ERROR);
- }
- return $this->response->success([
- 'id' => $model->id,
- 'path' => $model->path,
- 'url' => $model->url,
- ]);
- }
- /**
- * 下载资源
- * @must
- * @param Request $request
- * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
- * @throws \Illuminate\Validation\ValidationException
- */
- public function download(Request $request)
- {
- $this->validate($request, ['id' => 'required|integer']);
- $resource = $this->resourceService->handleProfile($request->get('id'));
- return response()->download(Storage::disk($resource->disk)->url($resource->path));
- }
- }
|