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. /**
  15. * 上传模块
  16. * Class UploadController
  17. * @package App\Http\Controllers\V1
  18. */
  19. class UploadController extends BaseController
  20. {
  21. /**
  22. * 上传图片
  23. * @param Request $request
  24. * @param ImageUploadHandler $handler
  25. * User: Mead
  26. */
  27. public function image(Request $request, ImageUploadHandler $handler)
  28. {
  29. try {
  30. $type = $request->get('type', 'trouble');
  31. $file = $request->file('file');
  32. $setting = $this->type2file($type);
  33. if (!count($setting)) {
  34. $this->response->errorBadRequest('请求错误');
  35. return '';
  36. }
  37. $path = $handler->save($file, $setting['folder'], $setting['disk'], $setting['file_prefix']);
  38. $re = Upload::create([
  39. 'path' => $path,
  40. 'disk' => $setting['disk'],
  41. 'is_use' => Upload::USE_NO,
  42. 'url' => path_to_url($path, $setting['disk']),
  43. 'merchant_id' => self::$MERCHANT_ID
  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. }