79 lines
2.5 KiB
Python
79 lines
2.5 KiB
Python
from flask import request, jsonify
|
|
from flask.views import MethodView
|
|
from sqlalchemy import desc
|
|
|
|
from common.utils.http import fail_api, success_api, table_api
|
|
from common.utils.upload import upload_one, delete_photo_by_id
|
|
from models import PhotoModel
|
|
|
|
|
|
class FilePhotoAPI(MethodView):
|
|
|
|
def get(self, photo_id):
|
|
if photo_id is None:
|
|
page = request.args.get('page', type=int, default=1)
|
|
limit = request.args.get('limit', type=int, default=10)
|
|
photo_paginate = PhotoModel.query.order_by(
|
|
desc(PhotoModel.create_at)).paginate(
|
|
page=page, per_page=limit, error_out=False)
|
|
data = [
|
|
{
|
|
'id': item.id,
|
|
'name': item.name,
|
|
'href': item.href,
|
|
'mime': item.mime,
|
|
'size': item.size,
|
|
'ext': item.ext if hasattr(item, 'ext') else "",
|
|
'create_at': str(item.create_at),
|
|
} for item in photo_paginate.items
|
|
]
|
|
return table_api(
|
|
result={
|
|
'items': data,
|
|
'total': photo_paginate.total,
|
|
},
|
|
code=0)
|
|
else:
|
|
# 显示一张图片
|
|
item = PhotoModel.query.get(photo_id)
|
|
return table_api(
|
|
result={
|
|
'items': {
|
|
'id': item.id,
|
|
'name': item.name,
|
|
'href': item.href,
|
|
'mime': item.mime,
|
|
'size': item.size,
|
|
'ext': item.ext if hasattr(item, 'ext') else "",
|
|
'create_at': str(item.create_at),
|
|
},
|
|
'total': 1,
|
|
},
|
|
code=0
|
|
)
|
|
|
|
def post(self):
|
|
if 'file' in request.files:
|
|
photo = request.files['file']
|
|
mime = request.files['file'].content_type
|
|
file_url = upload_one(photo=photo, mime=mime)
|
|
|
|
res = {
|
|
"message": "上传成功",
|
|
"code": 0,
|
|
"success": True,
|
|
"data": {"src": file_url},
|
|
}
|
|
return jsonify(res)
|
|
return fail_api()
|
|
|
|
def delete(self, photo_id):
|
|
res = delete_photo_by_id(photo_id)
|
|
if res:
|
|
return success_api(message="删除成功")
|
|
else:
|
|
return fail_api(message="删除失败")
|
|
|
|
def put(self, photo_id):
|
|
pass
|