AttachmentController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  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\BaseAttachmentModel;
  6. use Request, Response;
  7. class AttachmentController extends Controller
  8. {
  9. private $_serviceAttachment;
  10. private $_serviceAttachmentBbs;
  11. private $_serviceForumAttachment;
  12. private $_serviceForumAttachmentUnused;
  13. public function __construct()
  14. {
  15. if( !$this->_serviceAttachment ) $this->_serviceAttachment = new Attachment();
  16. }
  17. /**
  18. * SWFUpload文件上传
  19. */
  20. public function upload()
  21. {
  22. $request = Request::all();
  23. //通过上传控件ID,区分文件上传类型
  24. if(isset($request['elementid']) && substr($request['elementid'], 0, 15) == 'upload_template'){
  25. $this->_uploadTemplate($request);
  26. //上传到阿里云
  27. }elseif(isset($request['position']) && $request['position'] == 'alioss'){
  28. $this->_uploadToAlioss($request);
  29. //上传专题文件
  30. }
  31. elseif(isset($request['position']) && $request['position'] == 'special'){
  32. $this->_uploadSpecial($request);
  33. //上传到本地
  34. } else{
  35. $this->webupload($request);
  36. }
  37. }
  38. /**
  39. * 上传到本地
  40. */
  41. private function _uploadToServer($request)
  42. {
  43. $return = $this->_serviceAttachment->localUpload('imgFile', $request);
  44. if($return['code']=='200'){
  45. echo json_encode(["error"=> 0,"url" => config('app.url').$return['fileurl']]);exit;
  46. }else{
  47. echo json_encode(["error" => 1,"message" => $return['message']]);exit;
  48. }
  49. }
  50. /***
  51. * 文件上传
  52. */
  53. public function fileupload(){
  54. $request = request()->all();
  55. $data = $this->_serviceAttachment->fileUpload('file', $request, 'files');
  56. // return response()->json(array('data' => $data), 200);
  57. echo json_encode($data);exit;
  58. }
  59. /**
  60. * 上传专题文件
  61. */
  62. private function _uploadSpecial($request)
  63. {
  64. $return = $this->_serviceAttachment->specialUpload('Filedata', $request);
  65. echo json_encode($return);exit;
  66. }
  67. /**
  68. * 上传到阿里云
  69. */
  70. private function _uploadToAlioss($request)
  71. {
  72. $return = [];
  73. if(isset($request['editor'])){
  74. $data = $this->_serviceAttachment->aliUpload('upfile', $request);
  75. if($data['code'] === 200){
  76. \Log::info(json_encode($data));
  77. $return['state'] = 'SUCCESS';
  78. $return['url'] = $data['fileurl'];
  79. $return['title'] = $data['name'];
  80. }else{
  81. $return['error'] = 1;
  82. $return['message'] = $data['message'];
  83. }
  84. }else{
  85. $return = $this->_serviceAttachment->aliUpload('file', $request,'files');
  86. }
  87. echo json_encode($return);exit;
  88. }
  89. /**
  90. * 控件上传
  91. */
  92. public function webupload($request)
  93. {
  94. $return = [];
  95. if(isset($request['editor'])){
  96. $data = $this->_serviceAttachment->localUpload('upfile', $request, 'files');
  97. if($data['code'] === 200){
  98. \Log::info(json_encode($data));
  99. $return['state'] = 'SUCCESS';
  100. $return['url'] = $data['fileurl'];
  101. $return['title'] = $data['name'];
  102. }else{
  103. $return['error'] = 1;
  104. $return['message'] = $data['message'];
  105. }
  106. }else{
  107. $return = $this->_serviceAttachment->localUpload('file', $request, 'files');
  108. }
  109. echo json_encode($return);exit;
  110. }
  111. /**
  112. * @api {get} /api/attachment/download/{md5} 下载文件(图片)
  113. * @apiDescription 下载文件(图片)(get code)
  114. * @apiGroup Attachment
  115. * @apiPermission none
  116. * @apiVersion 0.1.0
  117. * @apiParam {string} md5 图片md5码
  118. * @apiSuccessExample {json} Success-Response:
  119. * HTTP/1.1 200 OK
  120. * {
  121. * 文件二进制码
  122. * }
  123. * @apiErrorExample {json} Error-Response:
  124. * HTTP/1.1 404 Not found
  125. */
  126. public function download()
  127. {
  128. $request = Request::all();
  129. $attachment = BaseAttachmentModel::where(['md5' => $request['md5']])->first();
  130. if (!$attachment) {
  131. return view('errors.404');
  132. }
  133. return Response::download($attachment->path, $attachment->name, [
  134. 'Content-type' => $attachment->file_type,
  135. 'Accept-Ranges' => 'bytes',
  136. 'Accept-Length' => $attachment->size,
  137. ]);
  138. }
  139. private function _createAttachmentRecord($data)
  140. {
  141. $uid = Request::input('uid');
  142. $aid = $this->_serviceForumAttachment->create(['tid' => 0, 'pid' => 0, 'uid' => $uid, 'tableid' => 127]);
  143. if($aid){
  144. $info = [
  145. 'aid' => $aid,
  146. 'uid' => $uid,
  147. 'dateline' => SYSTEM_TIME,
  148. 'filename' => $data['filename'],
  149. 'filesize' => $data['filesize'],
  150. 'attachment' => $data['attachment'],
  151. 'isimage' => (isset($data['width']) && $data['width']) ? 1 : 0,
  152. 'remote' => 1,
  153. 'width' => isset($data['width']) ? $data['width'] : 0,
  154. 'thumb' => 0,
  155. ];
  156. if(!$this->_serviceForumAttachmentUnused->create($info)){
  157. return 0;
  158. }
  159. }
  160. return $aid;
  161. }
  162. }