带有Web Api 2的Angular下载csv文件 [英] Angular download csv file with Web Api 2

查看:104
本文介绍了带有Web Api 2的Angular下载csv文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Web api 2和angular js下载csv文件.

I am trying to download a csv file using web api 2 and angular js.

这是我的控制器代码

public IHttpActionResult ExportCsvData()
{
    var stream = new FileStream("Testcsv.csv", FileMode.Open, FileAccess.Read);
    var response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Content = new StreamContent(stream);
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
    {
        FileName = "Testcsv.csv"
    };

    return Ok(response);
 }

这是我的角度代码,

var filename = 'testcsv.csv';
var contentType = 'text/csv;charset=utf-8';
var blob = new Blob([data], { type: contentType });
if (navigator.msSaveBlob) {
    navigator.msSaveBlob(blob, filename);
}

我正在使用IE 11,但是当我在excel中打开文件时,它看起来像这样,

I am using IE 11, but when I open the file in excel, it looks like this,

{   "version": {
    "major": 1
    "minor": 1
    "build": -1
    "revision": -1
    "majorRevision": -1
    "minorRevision": -1   }   "content": {
    "headers": [
      {
        "key": "Content-Type"
        "value": [
          "application/octet-stream"
        ]
      }
      {
        "key": "Content-Disposition"
        "value": [
          "attachment; filename=testcsv.csv"
        ]
      }
    ]

我在做什么错了?

谢谢!

推荐答案

您需要返回响应消息. Ok()将按原样序列化HttpResponseMessage.

You need to return a response message. The Ok() will serialize the HttpResponseMessage as is.

public IHttpActionResult ExportCsvData()
{

        var stream = new FileStream("Testcsv.csv", FileMode.Open, FileAccess.Read);
        var response = new HttpResponseMessage(HttpStatusCode.OK);
        response.Content = new StreamContent(stream);
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "Testcsv.csv"
        };

        return ResponseMessage(response);
 }

这篇关于带有Web Api 2的Angular下载csv文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆