从 Angular JS 中的 Web api 下载 csv 文件

2023-12-08

我的 API 控制器返回一个 csv 文件,如下所示:

    [HttpPost]
    public HttpResponseMessage GenerateCSV(FieldParameters fieldParams)
    {
        var output = new byte[] { };
        if (fieldParams!= null)
        {
            using (var stream = new MemoryStream())
            {
                this.SerializeSetting(fieldParams, stream);
                stream.Flush();
                output = stream.ToArray();
            }
        }
        var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(output) };
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "File.csv"
        };
        return result;
    }

我的 angularjs 将发送和接收 csv 文件如下所示:

$scope.save = function () {
            var csvInput= extractDetails();

            // File is an angular resource. We call its save method here which
            // accesses the api above which should return the content of csv
            File.save(csvInput, function (content) {
                var dataUrl = 'data:text/csv;utf-8,' + encodeURI(content);
                var hiddenElement = document.createElement('a');
                hiddenElement.setAttribute('href', dataUrl);
                hiddenElement.click();
            });
        };

在 Chrome 中,它会下载一个名为document但没有文件类型扩展名。 文件的内容是[Object object].

在 IE10 中,不会下载任何内容。

我可以做什么来解决这个问题?

更新: 这可能对遇到同样问题的你们有用:link


尝试一下:

File.save(csvInput, function (content) {
    var hiddenElement = document.createElement('a');

    hiddenElement.href = 'data:attachment/csv,' + encodeURI(content);
    hiddenElement.target = '_blank';
    hiddenElement.download = 'myFile.csv';
    hiddenElement.click();
});

基于最优秀的答案这个问题

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

从 Angular JS 中的 Web api 下载 csv 文件 的相关文章

随机推荐

  • 如果函数执行时间太长,iPhone 会超时吗?

    我有一个函数 可以使用 cocoa 的 Url 对象从网络获取外部资源 它在模拟器上工作正常 但偶尔在设备本身上失败 这是一个谷歌查询 所以资源显然确实存在 这让我相信硬件上存在一些内部超时障碍 但没有读到这样的障碍是否存在 还有其他人遇到
  • 动态显示和隐藏 JFrame 装饰

    我正在开发一个基于 Java Swing 的应用程序 具有不同的视角 对于 主菜单 透视图 我不希望装饰窗口 JFrame 而在其他透视图中 我确实希望装饰窗口 换句话说 我需要动态更改装饰属性 我尝试过使用setUndecorated f
  • 如何将行的值换行到R中特定字符处的新行

    我有一个包含值的示例数据框 data lt structure list A c Date Values B c 2023 04 03 Heat Capacity nSpecific Heat Capacity nHeat Index ro
  • JSON、CURL 和 Google 的地理定位

    我正在尝试使用谷歌的地理定位 浏览器定位 服务 到目前为止 我认为当我尝试类似的事情时 https maps googleapis com maps api browserlocation json browser firefox sens
  • 如何在 Microsoft Azure 网站上更改 jvm 参数

    我在Azure上创建了一个基于java的网站 并在使用 自定义创建 时选择tomcat作为容器 然后准备好了一个空网站 我可以使用ftp上传WAR文件 但无法触及tomcat文件 我需要更改 JVM 的堆大小 该怎么做 请参见http az
  • 致命错误:调用未定义的函数 mcrypt_get_block_size()

    我正在将我的网站上传到服务器 并且上传成功 之后 当我运行时 它给了我这个错误 致命错误 调用未定义的函数 mcrypt get block size 我也检查我的PHP我的服务器上的版本是5 3 14 我不知道该如何处理这个问题 我使用这
  • 如何通过Javascript与Flash交互?

    目前有一个非常基本的 Flash 项目 它连接到 rtmp 服务器并从网络摄像头传输视频和音频 它从具有特定名称的用户创建流 此外 在同一项目中 还有其他实体可以流式传输的流名称的输入 因此 您可以通过 Flash 进行类似于 Skype
  • 在客户端上找不到 socket.io.js

    这个问题之前已经被问过 但在之前的回复中没有找到任何解决方案 Socket IO 给我带来了两个问题 服务器端给出了此错误 错误 监听 EACCES 我阅读了堆栈溢出并通过发出 sudo 命令来启动服务器来解决此问题 现在客户端似乎没有按照
  • Winform标签控件文本变化的地方

    我有一个 labelControl Text My name 结果是 My name 符号改变位置 如果我写 My name 结果是 My name 我如何阻止它改变位置 您需要设置RightToLeft属性正确 默认情况下这应该是Righ
  • Python 中的 Hot Deck 插补

    我一直在尝试找到允许我替换数据框列中缺失值的 Python 代码 我的分析重点是生物统计学 因此我不习惯使用平均值 中位数 众数来替换值 我想申请 热甲板插补 方法 我无法在网上找到任何采用数据帧列并使用 Hot Deck Imputati
  • 将应用程序更新到 iPhone 的 appStore 时出现图标错误?

    我正在尝试使用应用程序加载器更新我的应用程序 当我提交存档文件时 我收到此错误 icon specified in the info plist not found under the top level app wrapper icon5
  • Mongodb 服务器启动警告

    我见过其他人有启动警告 但我似乎在这个上找不到任何内容 一些注意事项我在 Ubuntu 14 04 上运行 我的 mongo 版本是 3 0 5 我也尝试过 3 0 6 但有类似问题 我尝试停止 重新启动但无济于事 它似乎正在寻找一个不存在
  • 动态语言 IDE 中的自动补全,特别是 PyDev 中的 Python

    我是 Python 新手 具有静态类型语言 包括大量 Java 背景 在检查了功能 受欢迎程度等之后 我决定在 Eclipse 中使用 PyDev 作为 IDE 我很惊讶自动完成功能似乎无法正常工作于内置程序 例如 如果我在以下之后尝试对数
  • 在 C# 中转换日期时间格式

    如何从网络服务转换此日期时间格式 日期时间值为 timestamp 2014 04 18T14 45 00 02 00 我不想将其转换为 dd mm YYYY hh mm ss 你需要使用 yyyy MM dd T HH mm ssK 格式
  • SELECT、foreach 选项中的 knockoutjs 无容器模板不适用于 Internet Explorer

    我有一个测验 调查应用程序 但在使用 knockoutjs 填充下拉列表时遇到问题 请用 Firefox 或 Chrome 检查这个小提琴 然后用 Internet Explorer 9 或 IE8 或 IE7 knockout 说与 IE
  • 在 VB.Net 中使用 Enter 键的 Tab 键功能

    I have a form with nearly 20 Textbox and 5 Combobox and one control in dependent on the other Now I want to write the co
  • 通过数据映射器处理集合模式中的项目

    我的问题与更新部分有关 特雷斯科的回答于 谁应该处理复杂查询中的条件 数据映射器还是服务层 下面是代码供参考和方便 category new Category category gt setTitle privacy list new Ar
  • Info.plist:操作无法完成。 (XCBUtil.PropertyListConversionError 错误 0。)

    我在调试构建过程中收到此错误 无法从文件读取属性列表 Users TestApp FastApp ios FastApp Info plist 操作无法完成 XCBUtil PropertyListConversionError 错误 0
  • 我可以将 Java 编译为本机代码吗?

    有没有什么方法可以在不需要 JVM 的情况下从 Java 编译为独立 或库 机器代码 曾经有一个名为 GCJ 的工具 它是 GCC 的一部分 但它现在已被删除 现在 GCC 站点中的所有链接都重新定向到其非 GCJ 等效链接 注意 所有评论
  • 从 Angular JS 中的 Web api 下载 csv 文件

    我的 API 控制器返回一个 csv 文件 如下所示 HttpPost public HttpResponseMessage GenerateCSV FieldParameters fieldParams var output new by