Использование CSVHelper для вывода потока в браузер, но не удается сохранить файл

Я пытаюсь добиться именно того, что пытается сделать постер в этом вопросе, за исключением того, что браузер (Chrome) не пытается загрузить файл.csv или предоставить пользователю окно загрузки. Я использую запрос HTTP GET, и код практически идентичен в вопросе выше. Я использую Fiddler для мониторинга трафика и вижу ответный поток файлов.csv, но браузер, кажется, игнорирует его, и я не могу понять, почему...

Вот моя текущая реализация (основанная на вопросе @MattThrower):

Я делаю AJAX-вызов на контроллер MVC:

$("#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 ответов

Другие вопросы по тегам