You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.1 KiB

4 months ago
import time
from flask import Blueprint, render_template, session, request, jsonify
import os
from common.utility import compress_image
ueditor = Blueprint("ueditor", __name__)
@ueditor.route('/uedit', methods=['GET', 'POST'])
def uedit():
# 根据UEditor的接口定义规则如果前端参数为action=config
# 则表示试图请求后台的config.json文件请求成功则说明后台接口能正常工作
param = request.args.get('action')
if request.method == 'GET' and param == 'config':
return render_template('config.json')
# 构造上传图片的接口
elif request.method == 'POST' and request.args.get('action') == 'uploadimage':
f = request.files['upfile'] # 获取前端图片文件数据
filename = f.filename
# 为上传来的文件生成统一的文件名
suffix = filename.split('.')[-1] # 取得文件的后缀名
newname = time.strftime('%Y%m%d_%H%M%S.' + suffix)
f.save('./resource/upload/' + newname) # 保存图片
# 对图片进行压缩按照1200像素宽度为准并覆盖原始文件
source = dest = './resource/upload/' + newname
compress_image(source, dest, 1200)
result = {} # 构造响应数据
result['state'] = 'SUCCESS'
result["url"] = f"/upload/{newname}"
result['title'] = filename
result['original'] = filename
return jsonify(result) # 以JSON数据格式返回响应供前端编辑器引用
# 列出所有图片给前端浏览
elif request.method == 'GET' and param == 'listimage':
list = []
filelist = os.listdir('./resource/upload')
# 将所有图片构建成可访问的URL地址并添加到列表中
for filename in filelist:
if filename.lower().endswith('.png') or filename.lower().endswith('.jpg'):
list.append({'url': '/upload/%s' % filename})
# 根据listimage接口规则构建响应数据
result = {}
result['state'] = 'SUCCESS'
result['list'] = list
result['start'] = 0
result['total'] = 50
return jsonify(result)