v1.8.0: 模块化重构 + 后台登录认证

This commit is contained in:
2026-06-01 18:31:27 +08:00
parent ffb6146931
commit 7a30f9d1c7

View File

@@ -0,0 +1,57 @@
"""
图片上传 API
"""
import uuid
import time
import base64
from flask import Blueprint, request, jsonify
from config import IMAGES_DIR
from utils import allowed_file
upload_bp = Blueprint('api_upload', __name__)
@upload_bp.route('/api/upload/image', methods=['POST'])
def api_upload_image():
if 'file' not in request.files:
return jsonify({'error': '没有文件'}), 400
file = request.files['file']
if file.filename == '':
return jsonify({'error': '没有选择文件'}), 400
if not allowed_file(file.filename):
return jsonify({'error': '不允许的文件格式'}), 400
ext = file.filename.rsplit('.', 1)[1].lower()
filename = f"{uuid.uuid4().hex[:12]}_{int(time.time())}.{ext}"
filepath = IMAGES_DIR / filename
file.save(filepath)
return jsonify({'success': True, 'filename': filename,
'url': f'/static/uploads/{filename}'})
@upload_bp.route('/api/upload/image/base64', methods=['POST'])
def api_upload_image_base64():
data = request.get_json()
image_data = data.get('image', '')
if not image_data:
return jsonify({'error': '没有图片数据'}), 400
try:
if 'base64,' in image_data:
image_data = image_data.split('base64,')[1]
ext = data.get('ext', 'png')
filename = f"{uuid.uuid4().hex[:12]}_{int(time.time())}.{ext}"
filepath = IMAGES_DIR / filename
with open(filepath, 'wb') as f:
f.write(base64.b64decode(image_data))
return jsonify({'success': True, 'filename': filename,
'url': f'/static/uploads/{filename}'})
except Exception as e:
return jsonify({'error': str(e)}), 400
@upload_bp.route('/api/upload/image/delete/<filename>', methods=['DELETE'])
def api_delete_image(filename):
filepath = IMAGES_DIR / filename
if filepath.exists():
filepath.unlink()
return jsonify({'success': True})
return jsonify({'error': '文件不存在'}), 404