router.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. from io import BytesIO
  2. import os
  3. from flask import Flask, send_file, request, jsonify, render_template
  4. from app.gen_units import gen_qr_code, gen_file_url
  5. from dotenv import load_dotenv
  6. app = Flask(__name__, template_folder="../templates", static_folder="../static")
  7. @app.route('/')
  8. def index():
  9. return render_template('index.html')
  10. @app.route('/json/<filename>', methods=['GET'])
  11. def handle_get_request(filename):
  12. path = '../uploads/json/' + filename + '.json'
  13. return send_file(path)
  14. # 处理 POST 请求
  15. @app.route('/json/<filename>', methods=['POST'])
  16. def handle_post_request(filename):
  17. path = '../uploads/json/' + filename + '.json'
  18. return send_file(path)
  19. @app.route('/json/<filename>', methods=['PUT'])
  20. def handle_put_request(filename):
  21. path = '../uploads/json/' + filename + '.json'
  22. return send_file(path)
  23. @app.route('/json/<filename>', methods=['DELETE'])
  24. def handle_delete_request(filename):
  25. path = '../uploads/json/' + filename + '.json'
  26. return send_file(path)
  27. @app.route('/uploads', methods=['POST'])
  28. def upload_file():
  29. load_dotenv()
  30. url = os.environ.get('QR_URL_BASE')
  31. if request.method == 'POST':
  32. file = request.files['file']
  33. url = gen_file_url(file, url)
  34. return jsonify({'msg': '上传成功!', 'code': 1, 'data': url})
  35. @app.route('/html/<filename>', methods=['GET'])
  36. def html_request(filename):
  37. path = '../uploads/html/' + filename + '.html'
  38. return send_file(path)
  39. @app.route('/qrcode', methods=['get'])
  40. def qrcode():
  41. url = request.args.get('url')
  42. img = gen_qr_code(url)
  43. # 将图片写入 BytesIO 对象
  44. img_bytes_io = BytesIO()
  45. img.save(img_bytes_io)
  46. img_bytes_io.seek(0)
  47. # 返回二维码图片
  48. return send_file(img_bytes_io, mimetype='image/png')
  49. def start():
  50. app.run(host='0.0.0.0')