使用CSVHelper将流输出到浏览器但无法保存文件

时间:2014-06-19 14:46:46

标签: c# asp.net-mvc csvhelper

我正在努力实现this question中的海报正在尝试做的事情,除了浏览器(Chrome)不会尝试下载.csv文件或向用户提供下载框。我正在使用HTTP GET请求,代码在上面的问题中几乎完全相同。我使用Fiddler监控流量,我可以在响应中看到.csv文件流,但浏览器似乎忽略了它,我无法解决原因......

这是我目前的实施(基于@MattThrower的问题):

我对MVC控制器进行了AJAX调用:

$("#exportToCsvLink").click(function () {
    $.ajax({
        type: "GET",
        url: window.project.common.routes.urls.ExportChartDataToCsv,
        data: { parameterId: parameter.parameterId }
    });
});

MVC控制器处理CSV导出并返回FileStreamResult

public FileStreamResult ExportChartDataToCsv(int parameterId)
{
    List<TestViewModel> data = _CommonService.GetData(parameterId);

    var result = WriteCsvToMemory(data);
    var memoryStream = new MemoryStream(result);

    return new FileStreamResult(memoryStream, "text/csv") { FileDownloadName = "export.csv" };
}

public byte[] WriteCsvToMemory(IEnumerable<TestViewModel> data)
{
    using (var memoryStream = new MemoryStream())
    using (var streamWriter = new StreamWriter(memoryStream))
    using (var csvWriter = new CsvWriter(streamWriter))
    {
        csvWriter.WriteRecords(data);
        streamWriter.Flush();
        return memoryStream.ToArray();
    }
}

0 个答案:

没有答案