from io import BytesIO import os from flask import Flask, send_file, request, jsonify, render_template from app.gen_units import gen_qr_code, gen_file_url app = Flask(__name__, template_folder="../templates", static_folder="../static") @app.route('/') def index(): return render_template('index.html') @app.route('/json/', methods=['GET']) def handle_get_request(filename): path = '../uploads/json/' + filename + '.json' return send_file(path) # 处理 POST 请求 @app.route('/json/', methods=['POST']) def handle_post_request(filename): path = '../uploads/json/' + filename + '.json' return send_file(path) @app.route('/json/', methods=['PUT']) def handle_put_request(filename): path = '../uploads/json/' + filename + '.json' return send_file(path) @app.route('/json/', methods=['DELETE']) def handle_delete_request(filename): path = '../uploads/json/' + filename + '.json' return send_file(path) @app.route('/uploads', methods=['POST']) def upload_file(): url = os.environ.get('QR_URL_BASE') if request.method == 'POST': file = request.files['file'] url = gen_file_url(file, url) return jsonify({'msg': '上传成功!', 'code': 1, 'data': url}) @app.route('/html/', methods=['GET']) def html_request(filename): path = '../uploads/html/' + filename + '.html' return send_file(path) @app.route('/qrcode', methods=['get']) def qrcode(): url = request.args.get('url') img = gen_qr_code(url) # 将图片写入 BytesIO 对象 img_bytes_io = BytesIO() img.save(img_bytes_io) img_bytes_io.seek(0) # 返回二维码图片 return send_file(img_bytes_io, mimetype='image/png') def start(): app.run(host='0.0.0.0')