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);
- }
- }
|