You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Flask+jQuery Datatables导出的CSV存储到Windows服务器指定路径

实现方案

jQuery Datatables 自带的 excelHtml5 是纯前端导出能力,只能将文件下载到用户本地,无法直接写入服务器路径,你需要调整为「前端传递筛选后的数据/筛选参数到后端,由后端生成文件保存到指定路径」的方案,具体实现如下:

1. 前端Datatables配置修改

替换原有导出按钮配置,自定义点击事件,获取当前筛选后的表格数据提交到Flask后端:

buttons: [
    {
        text: 'Export Data',
        action: function ( e, dt, node, config ) {
            // 获取当前筛选条件下的全量表格数据
            let filteredData = dt.rows({ search: 'applied' }).data().toArray();
            // 获取表头内容,用于生成CSV表头
            let headers = dt.columns().header().toArray().map(item => item.textContent.trim());

            // 提交数据到后端接口
            $.ajax({
                url: '/save_export_file',
                method: 'POST',
                contentType: 'application/json',
                data: JSON.stringify({
                    headers: headers,
                    data: filteredData,
                    filename: 'Data.csv'
                }),
                success: function(res) {
                    res.status === 'success' ? alert('文件已保存到服务器') : alert('保存失败:' + res.msg);
                },
                error: () => alert('请求异常,请重试')
            })
        }
    }
]

2. Flask后端接口实现

新增接口接收前端数据,生成CSV文件写入服务器指定路径,注意确认运行Flask服务的账户对目标路径有写入权限:

from flask import Flask, request, jsonify
import csv
import os
from datetime import datetime

app = Flask(__name__)
# 配置服务器文件保存路径,Windows共享路径请使用原始字符串避免转义问题
SAVE_PATH = r'\\server_name\downloads'

@app.route('/save_export_file', methods=['POST'])
def save_export_file():
    try:
        req = request.get_json()
        headers = req.get('headers', [])
        table_data = req.get('data', [])
        // 未指定文件名则按时间戳自动生成
        file_name = req.get('filename', f'export_{datetime.now().strftime("%Y%m%d%H%M%S")}.csv')
        full_save_path = os.path.join(SAVE_PATH, file_name)

        // 写入CSV文件
        with open(full_save_path, 'w', newline='', encoding='utf-8-sig') as f:
            writer = csv.writer(f)
            if headers:
                writer.writerow(headers)
            for row in table_data:
                writer.writerow(row)
        
        return jsonify({'status': 'success', 'msg': '保存成功'})
    except Exception as e:
        return jsonify({'status': 'error', 'msg': str(e)}), 500

注意事项

  • 如果导出数据量较大,建议不要前端传递全量数据,改为传递Datatables的搜索、排序、筛选参数到后端,由后端重新执行对应SQL查询生成文件,避免请求体积过大超时。
  • 若需要生成xlsx格式的Excel文件,可以使用openpyxl库替换上述csv库的写入逻辑。
  • 目标路径如果是Windows共享文件夹,需要提前配置好对应账户的共享权限和NTFS写入权限。

内容的提问来源于stack exchange,提问作者dfahsjdahfsudaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:36:03