router.py 1.8 KB

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