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)