Веб-API возвращает csv-файл

мне нужно получить csv-файл от контроллера Web api. Я не могу получить диалог "Сохранить как", чтобы показать. На странице отображается только текстовый вывод. Я попробовал оба, вызывая экспорт из jquery, а также простой старый html

1 ответов


Я не знаю, является ли это правильным протоколом, но это то, как я сделал это раньше. Таким образом, у вас есть веб-страница, с которой вы будете вызывать API, который будет отвечать с файлом, и он должен обрабатываться диалогом сохранения браузера.

HTML:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>

    <script type="text/javascript">
        function save() {
            window.open('http://localhost:45719/api/home?id=12', '_blank', '');
        }
    </script>
</head>
<body>
    <a class="btn btn-primary" onclick="save()">Export</a>
</body>
</html>

действие:

public HttpResponseMessage Get(int id)
{
    MemoryStream stream = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);
    writer.Write("Hello, World!");
    writer.Flush();
    stream.Position = 0;

    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    result.Content = new StreamContent(stream);
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv");
    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "Export.csv" };
    return result;
}

это работает для меня как в Chrome, так и в Firefox.