CommonController.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Http\Controllers\Api\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Enums\ResponseCodeEnum;
  5. use App\Services\Base\UserService;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Storage;
  8. /**
  9. * 公共管理
  10. */
  11. class CommonController extends Controller
  12. {
  13. /**
  14. * UserController constructor.
  15. *
  16. * @param UserService $userService
  17. */
  18. public function __construct()
  19. {
  20. parent::__construct();
  21. }
  22. /**
  23. * 上传资源
  24. * @must
  25. * @param Request $request
  26. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  27. * @throws \Illuminate\Validation\ValidationException
  28. */
  29. public function upload(Request $request)
  30. {
  31. $this->validate($request, [
  32. 'file' => 'required|file',
  33. 'dir' => 'required|alpha_dash',
  34. 'file_type' => 'required|in:img,file'
  35. ], [], [
  36. 'file' => '文件',
  37. 'dir' => '存放目录',
  38. 'file_type' => '文件类型',
  39. ]);
  40. $file = $request->file('file');
  41. if (!$file->isFile()) {
  42. return $this->response->fail('请上传一个文件', ResponseCodeEnum::CLIENT_VALIDATION_ERROR);
  43. }
  44. $file_type = $request->get('file_type', 'img');
  45. if ($file_type === 'img') {
  46. // 如果上传的不是图片将终止操作
  47. $config = str2arr(byCodeGetSetting($this->allowed_img_ext));
  48. if (!is_array($config)) {
  49. abort(ResponseCodeEnum::SYSTEM_CONFIG_ERROR, '系统图片配置错误');
  50. }
  51. if (!in_array(strtolower($file->getClientOriginalExtension()), $config)) {
  52. return $this->response->fail('图片类型不合法', ResponseCodeEnum::CLIENT_VALIDATION_ERROR);
  53. }
  54. } else {
  55. $config = str2arr(byCodeGetSetting($this->allowed_file_ext));
  56. if (!is_array($config)) {
  57. abort(ResponseCodeEnum::SYSTEM_CONFIG_ERROR, '系统文件配置错误');
  58. }
  59. if (!in_array(strtolower($file->getClientOriginalExtension()), $config)) {
  60. return $this->response->fail('文件类型不合法', ResponseCodeEnum::CLIENT_VALIDATION_ERROR);
  61. }
  62. }
  63. $model = $this->resourceService->handleUpload($request);
  64. if (!$model) {
  65. return $this->response->fail('上传文件失败', ResponseCodeEnum::SYSTEM_ERROR);
  66. }
  67. return $this->response->success([
  68. 'id' => $model->id,
  69. 'path' => $model->path,
  70. 'url' => $model->url,
  71. ]);
  72. }
  73. /**
  74. * 下载资源
  75. * @must
  76. * @param Request $request
  77. * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  78. * @throws \Illuminate\Validation\ValidationException
  79. */
  80. public function download(Request $request)
  81. {
  82. $this->validate($request, ['id' => 'required|integer']);
  83. $resource = $this->resourceService->handleProfile($request->get('id'));
  84. return response()->download(Storage::disk($resource->disk)->url($resource->path));
  85. }
  86. }