"""
文件下载 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
