UploadController.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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\Storage;
  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. $file = $request->file('file');
  31. $type = $request->get('type');
  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. ]);
  44. return $this->response->item($re, UploadTransformer::class);
  45. } catch (\Exception $exception) {
  46. return $this->errorBadRequest('上传失败');
  47. }
  48. }
  49. /**
  50. * 根据不同的类型上传到不同的目录
  51. * @param $type
  52. * @return array
  53. * User: Mead
  54. */
  55. protected function type2file($type)
  56. {
  57. $data = [
  58. 'folder' => '',
  59. 'disk' => 'qiniu',
  60. 'file_prefix' => $type
  61. ];
  62. switch ($type) {
  63. case 'trouble':
  64. $data['folder'] .= 'trouble';
  65. return $data;
  66. break;
  67. }
  68. return [];
  69. }
  70. }