UploadController.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Mead
  5. * Date: 2019/8/19
  6. * Time: 2:11 PM
  7. */
  8. namespace App\Http\Controllers\V1;
  9. use App\Handlers\ImageUploadHandler;
  10. use App\Models\Upload;
  11. use App\Transformers\UploadTransformer;
  12. use Dingo\Api\Http\Request;
  13. use Illuminate\Support\Facades\Log;
  14. use Illuminate\Support\Facades\Storage;
  15. /**
  16. * 上传模块
  17. * Class UploadController
  18. * @package App\Http\Controllers\V1
  19. */
  20. class UploadController extends BaseController
  21. {
  22. /**
  23. * 上传图片
  24. * @param Request $request
  25. * @param ImageUploadHandler $handler
  26. * User: Mead
  27. */
  28. public function image(Request $request, ImageUploadHandler $handler)
  29. {
  30. try {
  31. $type = $request->get('type', 'trouble');
  32. $file = $request->file('file');
  33. $setting = $this->type2file($type);
  34. if (!count($setting)) {
  35. $this->response->errorBadRequest('请求错误');
  36. return '';
  37. }
  38. $path = $handler->save($file, $setting['folder'], $setting['disk'], $setting['file_prefix']);
  39. $re = Upload::create([
  40. 'path' => $path,
  41. 'disk' => $setting['disk'],
  42. 'is_use' => Upload::USE_NO,
  43. 'url' => path_to_url($path, $setting['disk'])
  44. ]);
  45. return $this->response->item($re, UploadTransformer::class);
  46. } catch (\Exception $exception) {
  47. Log::error($exception->getMessage());
  48. return $this->errorBadRequest('上传失败');
  49. }
  50. }
  51. /**
  52. * 根据不同的类型上传到不同的目录
  53. * @param $type
  54. * @return array
  55. * User: Mead
  56. */
  57. protected function type2file($type)
  58. {
  59. $data = [
  60. 'folder' => '',
  61. 'disk' => 'qiniu',
  62. 'file_prefix' => $type
  63. ];
  64. switch ($type) {
  65. case 'trouble':
  66. $data['folder'] .= 'trouble';
  67. return $data;
  68. break;
  69. case 'auth':
  70. $data['folder'] .= 'auth';
  71. return $data;
  72. break;
  73. }
  74. $data['folder'] .= 'default';
  75. return $data;
  76. }
  77. }