AttachmentController.php 3.0 KB

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