使用 Web Api 2 Angular 下载 csv 文件

2024-03-19

我正在尝试使用 web api 2 和 Angular js 下载 csv 文件。

这是我的控制器代码

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 中打开文件时,它看起来像这样,

{   "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"
        ]
      }
    ]

我究竟做错了什么?

Thanks !


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

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);
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Web Api 2 Angular 下载 csv 文件 的相关文章

随机推荐

  • 如何检查实体框架类型的属性是否可为 Null

    我有一个从数据库生成的 EntityDataModel 其中一个实体模型有两个属性 它们都是字符串类型 一个是 Nullable True 另一个是 Nullable False 如何在运行时检查 Nullable 属性的值 如果您的属性装
  • 如何从 Swagger API 声明生成 JSON-Schema

    我有 Swagger API 声明 用于使用招摇 v 1 2 https github com wordnik swagger spec blob master versions 1 2 md 我对 Swagger 的最初感觉是它非常接近
  • SQL Server - 同义词提示和技巧? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在xamarin表单中移动右侧搜索栏的搜索图标

    如何在 Xamarin 表单中移动右侧搜索栏的搜索图标 我正在寻找安卓和IOS 对于 Android 我使用了 SearchBarRenderer 下面的代码不起作用 有人知道该怎么做吗 请帮忙 protected override voi
  • 如何在AngularJS中创建全局变量

    我遇到这个问题 当您注册时 您会进入 用户 页面 它应该说 欢迎 用户名没有出现在网页上 原因我不确定 请帮助这里是plunkr http plnkr co edit qB3Gkeq5ji1YQyy0kpGH p preview http
  • 如何在Python中找到素数

    我是Python新手 我正在尝试计算给定范围内的素数 开发者分享的一些答案如下 import math def count primes num out for i in range 3 num 2 if all i j 0 for j i
  • 如何使用车把模板显示json对象键和值?

    我已经开始学习handlebar js 我正在努力显示 json 数据 我的 json 看起来像这样 var data record1 first name john city newyork name brit
  • CMPXCHG16B 正确吗?

    尽管我不确定为什么 但这似乎并不完全正确 建议会很好 因为 CMPXCHG16B 的文档非常少 我没有任何英特尔手册 template lt gt inline bool cas volatile types uint128 t src t
  • 使用 netbeans 中另一个 jFrame 的按钮关闭 jFrame?

    我在 netbeans 中创建了两个 jFrame 第一个被命名为MainFrame另一个是ExternalFrame 每个都有一个按钮 单击按钮MainFrame将设置ExternalFrame可见与MainFrame仍然在屏幕上 我想处
  • 如何Python请求像我的浏览器一样跟随URL

    我注意到 Python 的 requests 库并不像我的浏览器那样遵循某些 URL 重定向 例如 当我这样做时 response requests get http www bbmt org verify False allow redi
  • 为什么 Python 有 __ne__ 运算符方法而不仅仅是 __eq__?

    答案here https stackoverflow com questions 4352244 python implementing ne operator based on eq给出您想要的案例的手动参考 ne 返回除逻辑倒数之外的其
  • 带构造函数的抽象类,强制继承类调用它

    我有一个abstract带有构造函数的类XYZ string name 我还有一个继承自该抽象类的类 如何强制遗传要调用的类base string name 现在我可以使用new Inherited 并且它不会调用基本构造函数 我想强制用户
  • Mathematica 下调 Lhs 值

    有谁知道 Mathematica 中是否有一个内置函数可以获取 downvalue 规则的 lhs 没有任何保留 我知道如何编写代码来做到这一点 但这对于内置程序来说似乎已经足够基本了 例如 a 1 2 a 2 3 BuiltInIDoNo
  • Xcode 构建和运行错误:“进程启动失败:无法获取进程 216 的任务”

    更新到 Mavericks 并确保我也安装了 Xcode 的最新更新后 Xcode 突然无法在设备上启动应用程序 它会在我的 iPhone 上安装该应用程序 但在运行之前会抛出以下错误 进程启动失败 无法获取进程 216 的任务 这是更新后
  • Docker 中的 PostgreSQL - pg_hba.conf 允许从主机访问容器

    我想在 Docker 容器内运行 PostgreSQL 我正在构建自己的 Docker 镜像 因为我想包含 PostgreSQL 扩展 我应该编辑pg hba conf配置文件到 允许来自其他容器的访问 允许来自主机的访问 第一个非常简单
  • 无法读取未定义的属性“标签”

    我刚刚学习 Chart js 的工作原理 因此我直接使用了 Chart js API 页面上的示例代码 但它似乎不起作用 我将以下代码放入脚本标记中 并收到 无法读取未定义的属性 标签 错误 不确定这个错误意味着什么 function va
  • 从通用约束 Dart 调用静态方法

    我正在尝试从收到的泛型类型中调用静态方法 这可能吗 此外 我应用了类型约束 以便仅从其父类操作该对象 这是我想要实现的目标的一个简短示例 class A static func print A class B extends A stati
  • WS-Security 不适用于 CXF

    我正在尝试使用 Apache CXF 开发支持 WS 安全的 Web 服务 我正在遵循的教程是here http www benmccann com blog apache cxf tutorial ws security with spr
  • jQuery getJSON 请求在有效请求上返回空

    我正在尝试从 Apple 的 iTunes JSON 服务获取一些 JSON 请求很简单 如果您在浏览器中访问该 URL 您将看到一些格式良好 由 jsonlint com 支持 的 JSON 然而 当我使用以下 jQuery 发出请求时
  • 使用 Web Api 2 Angular 下载 csv 文件

    我正在尝试使用 web api 2 和 Angular js 下载 csv 文件 这是我的控制器代码 public IHttpActionResult ExportCsvData var stream new FileStream Test