| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | 
							- <?php
 
- namespace App\Http\Controllers\Api\V1;
 
- use App\Helper\AttachmentHelper;
 
- use App\Models\BaseAttachmentModel;
 
- use Illuminate\Http\Request;
 
- use App\Services\Base\Attachment;
 
- use App\Services\Base\ErrorCode;
 
- use Validator, Response;
 
- class AttachmentController extends Controller
 
- {
 
-     use AttachmentHelper;
 
-     /**
 
-      * @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($md5)
 
-     {
 
-         $attachment = Attachment::where(['md5' => $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,
 
-         ]);
 
-     }
 
-     /**
 
-      * @api {post} /api/attachment/upload 通用上传接口
 
-      * @apiDescription 通用上传接口
 
-      * @apiGroup Attachment
 
-      * @apiPermission none
 
-      * @apiVersion 0.1.0
 
-      * @apiParam {string} tag 附件标签 avatar video dream
 
-      * @apiParam {File} file 附件(可以多个,使用file.xxx,可返回多个)[默认大小【10M】, 类型图片png jpg gif,视频类型mp4]
 
-      * @apiSuccessExample {json} Success-Response:
 
-      * HTTP/1.1 200 OK
 
-      * {
 
-      *     "state": true,
 
-      *     "code": 0,
 
-      *     "message": "",
 
-      *     "data": [
 
-      *         "file": "f72e7dad80f597ed6621a009e82243ad",
 
-      *          //文件访问url http://localhost/attachment/f72e7dad80f597ed6621a009e82243ad
 
-      *     ]
 
-      * }
 
-      * @apiErrorExample {json} Error-Response:
 
-      * HTTP/1.1 400 Bad Request
 
-      * {
 
-      *     "state": false,
 
-      *     "code": 1000,
 
-      *     "message": "传入参数不正确",
 
-      *     "data": null or []
 
-      * }
 
-      * 可能出现的错误代码:
 
-      *    200     SAVE_USER_FAILED                保存用户数据失败
 
-      *    201     ATTACHMENT_MKDIR_FAILED         创建附件目录失败
 
-      *    202     ATTACHMENT_UPLOAD_INVALID       上传附件文件无效
 
-      *    203     ATTACHMENT_SAVE_FAILED          保存附件失败
 
-      *    204     ATTACHMENT_MOVE_FAILED          移动附件失败
 
-      *    205     ATTACHMENT_DELETE_FAILED        删除附件文件失败
 
-      *    206     ATTACHMENT_RECORD_DELETE_FAILED 删除附件记录失败
 
-      *    1000    CLIENT_WRONG_PARAMS             传入参数不正确
 
-      *    1101    INCORRECT_VERIFY_CODE           输入验证码错误
 
-      *    1105    USER_DOES_NOT_EXIST             用户不存在
 
-      *    1200    ATTACHMENT_UPLOAD_FAILED        附件上传失败
 
-      *    1201    ATTACHMENT_SIZE_EXCEEDED        附件大小超过限制
 
-      *    1202    ATTACHMENT_MIME_NOT_ALLOWED     附件类型不允许
 
-      *    1203    ATTACHMENT_NOT_EXIST            附件不存在
 
-      */
 
-     public function upload(Request $request) {
 
-         \Log::info($request->all());
 
-         $validator = Validator::make($request->all(),
 
-             [
 
-                 'tag'         => 'required|alpha_dash',
 
-             ],
 
-             [
 
-                 'tag.required'      => 'tag必填',
 
-                 'tag.alpha_dash'    => 'tag只能为字母数字中/下划线',
 
-             ]
 
-         );
 
-         if ($validator->fails()) {
 
-             return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '', $validator->messages());
 
-         }
 
-         $result = $this->uploadAttachment($request, $request->get('file'), $request->get('tag'), 10 * 1024 * 1024, [
 
-             'image/jpeg',
 
-             'image/png',
 
-             'image/gif',
 
-             'video/mp4',
 
-         ]);
 
-         if (is_array($result)) {
 
-             return $this->api($result);
 
-         } elseif (is_string($result)) {
 
-             return $this->api(['file' => $result]);
 
-         } else {
 
-             return $this->error($result);
 
-         }
 
-     }
 
-     /**
 
-      * @api {get} /api/attachment/delete/{md5} 删除文件(图片)
 
-      * @apiDescription 删除文件(图片)
 
-      * @apiGroup Attachment
 
-      * @apiPermission Passport
 
-      * @apiVersion 0.1.0
 
-      * @apiParam {string} md5   图片md5码
 
-      * @apiSuccessExample {json} Success-Response:
 
-      * HTTP/1.1 200 OK
 
-      * {
 
-      *     "state": true,
 
-      *     "code": 0,
 
-      *     "message": "",
 
-      *     "data": {
 
-      *         "result": true/false
 
-      *     }
 
-      * }
 
-      * @apiErrorExample {json} Error-Response:
 
-      * HTTP/1.1 400 Bad Request
 
-      * {
 
-      *     "state": false,
 
-      *     "code": 1000,
 
-      *     "message": "传入参数不正确",
 
-      *     "data": null or []
 
-      * }
 
-      * 可能出现的错误代码:
 
-      *    205     ATTACHMENT_DELETE_FAILED        删除附件文件失败
 
-      *    206     ATTACHMENT_RECORD_DELETE_FAILED 删除附件记录失败
 
-      *    1203    ATTACHMENT_NOT_EXIST            附件不存在
 
-      */
 
-     public function delete($md5) {
 
-         $result = $this->deleteAttachment($md5);
 
-         if ($result === 0) {
 
-             return $this->api(['result' => true]);
 
-         } else {
 
-             return $this->error($result);
 
-         }
 
-     }
 
-     public function index(){
 
-         $result = BaseAttachmentModel::all()->sortByDesc('id');
 
-         return $this->api($result);
 
-     }
 
- }
 
 
  |