AttachmentController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App\Http\Controllers\V1;
  3. use Illuminate\Http\Request;
  4. //use App\Helper\AttachmentHelper;
  5. use App\Services\Base\ErrorCode;
  6. use App\Services\AttachmentServer;
  7. use Illuminate\Support\Facades\Validator;
  8. class AttachmentController extends Controller
  9. {
  10. //use AttachmentHelper;
  11. /**
  12. * * 可能出现的错误代码:
  13. * 200 SAVE_USER_FAILED 保存用户数据失败
  14. * 201 ATTACHMENT_MKDIR_FAILED 创建附件目录失败
  15. * 202 ATTACHMENT_UPLOAD_INVALID 上传附件文件无效
  16. * 203 ATTACHMENT_SAVE_FAILED 保存附件失败
  17. * 204 ATTACHMENT_MOVE_FAILED 移动附件失败
  18. * 205 ATTACHMENT_DELETE_FAILED 删除附件文件失败
  19. * 206 ATTACHMENT_RECORD_DELETE_FAILED 删除附件记录失败
  20. * 1000 CLIENT_WRONG_PARAMS 传入参数不正确
  21. * 1101 INCORRECT_VERIFY_CODE 输入验证码错误
  22. * 1105 USER_DOES_NOT_EXIST 用户不存在
  23. * 1200 ATTACHMENT_UPLOAD_FAILED 附件上传失败
  24. * 1201 ATTACHMENT_SIZE_EXCEEDED 附件大小超过限制
  25. * 1202 ATTACHMENT_MIME_NOT_ALLOWED 附件类型不允许
  26. * 1203 ATTACHMENT_NOT_EXIST 附件不存在
  27. * @param Request $request
  28. * @return \Illuminate\Http\JsonResponse
  29. */
  30. public function upload(Request $request)
  31. {
  32. try {
  33. $validator = Validator::make($request->all(),
  34. [
  35. 'tag' => 'required|alpha_dash',
  36. ], [
  37. 'tag.required' => 'tag必填',
  38. 'tag.alpha_dash' => 'tag只能为字母数字中/下划线',
  39. ]
  40. );
  41. if ($validator->fails()) {
  42. throw new \Exception($validator->messages()->first());
  43. }
  44. $result = (new AttachmentServer())->uploadAttachment($request, $request->post('file'), $request->post('tag'), 10 * 1024 * 1024, [
  45. 'image/jpeg',
  46. 'image/png',
  47. 'image/gif',
  48. 'video/mp4',
  49. ]);
  50. } catch (\Exception $exception) {
  51. return $this->error($exception->getMessage());
  52. }
  53. return $this->success(['file' => $result], 0, trans("api.UPLOAD_SUCCESS"));
  54. }
  55. /**
  56. * @param Request $request
  57. * @return \Illuminate\Http\JsonResponse
  58. * parse_url($url);
  59. * array (
  60. 'scheme' => 'https',
  61. 'host' => 'zhengda.oss-cn-chengdu.aliyuncs.com',
  62. 'path' => '/api_avatar/2022-07/14/1271657787068220714.jpeg',
  63. )
  64. */
  65. public function delete(Request $request)
  66. {
  67. $picUrl = $request->pic_url;
  68. if(empty($picUrl)){
  69. return $this->error('路径必填!');
  70. }
  71. $arr = parse_url($picUrl);
  72. $path = substr($arr['path'], 1);
  73. $result = (new AttachmentServer())->deleteAttachment($path);
  74. if ($result) {
  75. return $this->success([]);
  76. } else {
  77. return $this->error('',ErrorCode::ATTACHMENT_DELETE_FAILED);
  78. }
  79. }
  80. }