123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- <?php
- namespace App\Http\Controllers\Admin\Base;
- use App\Http\Controllers\Admin\Controller;
- use App\Services\Base\Attachment;
- use App\Models\BaseAttachmentModel;
- use Request, Response;
- class AttachmentController extends Controller
- {
- private $_serviceAttachment;
- private $_serviceAttachmentBbs;
- private $_serviceForumAttachment;
- private $_serviceForumAttachmentUnused;
- public function __construct()
- {
- if( !$this->_serviceAttachment ) $this->_serviceAttachment = new Attachment();
- }
- /**
- * SWFUpload文件上传
- */
- public function upload()
- {
- $request = Request::all();
- //通过上传控件ID,区分文件上传类型
- if(isset($request['elementid']) && substr($request['elementid'], 0, 15) == 'upload_template'){
- $this->_uploadTemplate($request);
- //上传到阿里云
- }elseif(isset($request['position']) && $request['position'] == 'alioss'){
- $this->_uploadToAlioss($request);
- //上传专题文件
- }
- elseif(isset($request['position']) && $request['position'] == 'special'){
- $this->_uploadSpecial($request);
- //上传到本地
- } else{
- $this->webupload($request);
- }
- }
- /**
- * 上传到本地
- */
- private function _uploadToServer($request)
- {
- $return = $this->_serviceAttachment->localUpload('imgFile', $request);
- if($return['code']=='200'){
- echo json_encode(["error"=> 0,"url" => config('app.url').$return['fileurl']]);exit;
- }else{
- echo json_encode(["error" => 1,"message" => $return['message']]);exit;
- }
- }
- /***
- * 文件上传
- */
- public function fileupload(){
- $request = request()->all();
- $data = $this->_serviceAttachment->fileUpload('file', $request, 'files');
- // return response()->json(array('data' => $data), 200);
- echo json_encode($data);exit;
- }
- /**
- * 上传专题文件
- */
- private function _uploadSpecial($request)
- {
- $return = $this->_serviceAttachment->specialUpload('Filedata', $request);
- echo json_encode($return);exit;
- }
- /**
- * 上传到阿里云
- */
- private function _uploadToAlioss($request)
- {
- $return = [];
- if(isset($request['editor'])){
- $data = $this->_serviceAttachment->aliUpload('upfile', $request);
- if($data['code'] === 200){
- \Log::info(json_encode($data));
- $return['state'] = 'SUCCESS';
- $return['url'] = $data['fileurl'];
- $return['title'] = $data['name'];
- }else{
- $return['error'] = 1;
- $return['message'] = $data['message'];
- }
- }else{
- $return = $this->_serviceAttachment->aliUpload('file', $request,'files');
- }
- echo json_encode($return);exit;
- }
- /**
- * 控件上传
- */
- public function webupload($request)
- {
- $return = [];
- if(isset($request['editor'])){
- $data = $this->_serviceAttachment->localUpload('upfile', $request, 'files');
- if($data['code'] === 200){
- \Log::info(json_encode($data));
- $return['state'] = 'SUCCESS';
- $return['url'] = $data['fileurl'];
- $return['title'] = $data['name'];
- }else{
- $return['error'] = 1;
- $return['message'] = $data['message'];
- }
- }else{
- $return = $this->_serviceAttachment->localUpload('file', $request, 'files');
- }
- echo json_encode($return);exit;
- }
- /**
- * @api {get} /api/attachment/download/{md5} 下载文件(图片)
- * @apiDescription 下载文件(图片)(get code)
- * @apiGroup Attachment
- * @apiPermission none
- * @apiVersion 0.1.0
- * @apiParam {string} md5 图片md5码
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * 文件二进制码
- * }
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 404 Not found
- */
- public function download()
- {
- $request = Request::all();
- $attachment = BaseAttachmentModel::where(['md5' => $request['md5']])->first();
- if (!$attachment) {
- return view('errors.404');
- }
- return Response::download($attachment->path, $attachment->name, [
- 'Content-type' => $attachment->file_type,
- 'Accept-Ranges' => 'bytes',
- 'Accept-Length' => $attachment->size,
- ]);
- }
- private function _createAttachmentRecord($data)
- {
- $uid = Request::input('uid');
- $aid = $this->_serviceForumAttachment->create(['tid' => 0, 'pid' => 0, 'uid' => $uid, 'tableid' => 127]);
- if($aid){
- $info = [
- 'aid' => $aid,
- 'uid' => $uid,
- 'dateline' => SYSTEM_TIME,
- 'filename' => $data['filename'],
- 'filesize' => $data['filesize'],
- 'attachment' => $data['attachment'],
- 'isimage' => (isset($data['width']) && $data['width']) ? 1 : 0,
- 'remote' => 1,
- 'width' => isset($data['width']) ? $data['width'] : 0,
- 'thumb' => 0,
- ];
- if(!$this->_serviceForumAttachmentUnused->create($info)){
- return 0;
- }
- }
- return $aid;
- }
- }
|