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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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)