from flask import Flask, send_file, abort, request, jsonify from pathlib import Path app = Flask(__name__) PROJECT_ROOT = Path(__file__).parent.resolve() SCREENSHOTS_DIR = Path("/opt/ql/daily_com/bin/screenshots").resolve() @app.route('/image/screenshots/') def serve_image(filename): file_path = SCREENSHOTS_DIR / filename # 防止路径越界访问 try: file_path.resolve().relative_to(SCREENSHOTS_DIR.resolve()) except ValueError: abort(403, description=f"禁止访问目录外文件: {file_path.resolve()}") if not file_path.exists(): abort(404, description=f"文件不存在: {file_path.resolve()}") return send_file(file_path, as_attachment=False) # 自定义 404 错误响应 @app.errorhandler(404) def handle_404(e): return f"404 错误:{e.description}", 404 # 自定义 403 错误响应 @app.errorhandler(403) def handle_403(e): return f"403 错误:{e.description}", 403 if __name__ == '__main__': app.run(host='0.0.0.0', debug=False, port=5000)