""" 文件下载 API """ import os from flask import request, jsonify, send_from_directory from . import download_bp @download_bp.route('/download', methods=['GET']) def download_file(): """下载文件""" try: file_path = request.args.get('path') print(f"[下载] 请求路径:{file_path}") if not file_path: return jsonify({'success': False, 'message': '文件路径不能为空'}), 400 # 安全检查:确保路径在 public 目录下 if not file_path.startswith('/reports/'): return jsonify({'success': False, 'message': '无效的文件路径'}), 400 filename = file_path.replace('/reports/', '') # 使用绝对路径 reports_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'public', 'reports') print(f"[下载] 文件目录:{reports_dir}") print(f"[下载] 文件名:{filename}") print(f"[下载] 文件是否存在:{os.path.exists(os.path.join(reports_dir, filename))}") # 列出目录中的所有文件 if os.path.exists(reports_dir): print(f"[下载] 目录中的文件:{os.listdir(reports_dir)}") return send_from_directory(reports_dir, filename, as_attachment=True) except Exception as e: print(f"[下载] 错误:{str(e)}") import traceback traceback.print_exc() return jsonify({'success': False, 'message': str(e)}), 500