AttachmentInfoController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Admin\Controller;
  4. use App\Services\Base\Attachment;
  5. use App\Models\AttachmentInfoModel;
  6. use Request, Response;
  7. class AttachmentInfoController extends Controller
  8. {
  9. private $_serviceAttachment;
  10. public function __construct()
  11. {
  12. if (!$this->_serviceAttachment) $this->_serviceAttachment = new Attachment();
  13. }
  14. /**
  15. * 文件上传
  16. */
  17. public function upload()
  18. {
  19. $request = Request::all();
  20. if (isset($request['position']) && $request['position'] == 'alioss') {
  21. $this->_uploadToAlioss($request);
  22. } else {
  23. $this->_uploadToLocal($request);
  24. }
  25. }
  26. /***
  27. * 文件上传
  28. */
  29. public function fileupload()
  30. {
  31. $request = request()->all();
  32. $data = $this->_serviceAttachment->fileUpload('file', $request, 'files');
  33. echo json_encode($data);
  34. exit;
  35. }
  36. /**
  37. * 上传到阿里云
  38. */
  39. private function _uploadToAlioss($request)
  40. {
  41. $return = [];
  42. if (isset($request['editor'])) {
  43. $data = $this->_serviceAttachment->aliUpload('upfile', $request);
  44. if ($data['code'] === 200) {
  45. \Log::info(json_encode($data));
  46. $return['state'] = 'SUCCESS';
  47. $return['url'] = $data['fileurl'];
  48. $return['title'] = $data['name'];
  49. } else {
  50. $return['error'] = 1;
  51. $return['message'] = $data['message'];
  52. }
  53. } else {
  54. $return = $this->_serviceAttachment->aliUpload('file', $request);
  55. }
  56. echo json_encode($return);
  57. exit;
  58. }
  59. /**
  60. * 上传到本地
  61. */
  62. public function _uploadToLocal($request)
  63. {
  64. $return = [];
  65. if (isset($request['editor'])) {
  66. $data = $this->_serviceAttachment->localUpload('upfile', $request);
  67. if ($data['code'] === 200) {
  68. \Log::info(json_encode($data));
  69. $return['state'] = 'SUCCESS';
  70. $return['url'] = $data['fileurl'];
  71. $return['title'] = $data['name'];
  72. } else {
  73. $return['error'] = 1;
  74. $return['message'] = $data['message'];
  75. }
  76. } else {
  77. $return = $this->_serviceAttachment->localUpload('file', $request);
  78. }
  79. echo json_encode($return);
  80. exit;
  81. }
  82. /**
  83. * @api {get} /api/attachment/download/{md5} 下载文件(图片)
  84. * @apiDescription 下载文件(图片)(get code)
  85. * @apiGroup Attachment
  86. * @apiPermission none
  87. * @apiVersion 0.1.0
  88. * @apiParam {string} md5 图片md5码
  89. * @apiSuccessExample {json} Success-Response:
  90. * HTTP/1.1 200 OK
  91. * {
  92. * 文件二进制码
  93. * }
  94. * @apiErrorExample {json} Error-Response:
  95. * HTTP/1.1 404 Not found
  96. */
  97. public function download()
  98. {
  99. $request = Request::all();
  100. $attachment = AttachmentInfoModel::where(['md5' => $request['md5']])->first();
  101. if (!$attachment) {
  102. return view('errors.404');
  103. }
  104. return Response::download($attachment->path, $attachment->name, [
  105. 'Content-type' => $attachment->file_type,
  106. 'Accept-Ranges' => 'bytes',
  107. 'Accept-Length' => $attachment->size,
  108. ]);
  109. }
  110. public function remove(){
  111. $request = Request::all();
  112. $file = AttachmentInfoModel::where(['url' => $request['file']])->first();
  113. if($file){
  114. $md5 = $file->md5;
  115. $this->_serviceAttachment->deleteAttachment($md5);
  116. }
  117. $data = [
  118. 'code' => 200,
  119. 'msg' => '移除成功',
  120. 'data' => $request['file']
  121. ];
  122. echo json_encode($data);
  123. exit;
  124. }
  125. }