当前位置: 首页 > 知识库问答 >
问题:

使用节点弹出提示csv文件下载。js和节点csv解析器(节点模块)

商焕
2023-03-14

最近我开始使用node。js。当我在我的一个项目中完成一个需求时,我面临一个问题,我应该能够将一些数据动态写入csv文件,并让它作为弹出窗口提示用户下载(如我们通常看到的,带有保存和取消选项)。在谷歌搜索了一段时间后,我决定使用csv npm模块https://github.com/wdavidw/node-csv-parser.我能够将数据写入文件并使用此模块进行保存。我想提示一个弹出窗口来保存此文件,同时保存/不保存该文件。

我的代码如下所示:

    // Sample Data 
    var data = [["id", "subject1", "subject2", "subject3"], ["jack", 85, 90, 68], ["sam", 77, 89, 69]]

    // Server Side Code    
    var csv = require('../../node_modules/csv');            
    var fs = require('fs');

    createCSV = function(data, callback) {
        csv().from(data).to(fs.createWriteStream('D:/test.csv')) // writing to a file           
    }

    // Client side call sample
    $("#exportToCSV").click(function() {
        callToServer.createCSV(data);
       return false;
    });

就编写csv文件而言,这是有效的。

  • 我想提示这个文件立即下载给用户。
  • 如果不保存文件就能做到这一点,那就太好了。
  • 如何像在PHP中一样设置内容类型和内容处理

非常感谢您的帮助-谢谢

共有3个答案

唐威
2023-03-14

以下解决方案适用于Express

Express经过改进,不再设置附件和内容类型头,而是直接使用附件apihttp://expressjs.com/4x/api.html#res.attachment

注意:attachment()不传输文件,它只是在头中设置文件名。

response.attachment('testing.csv');
csv().from(data).to(response);
劳鹏云
2023-03-14

我是这样做的:

http.createServer(function(request, response) {
    response.setHeader('Content-disposition', 'attachment; filename=testing.csv');
    response.writeHead(200, {
        'Content-Type': 'text/csv'
    });

    csv().from(data).to(response)

})
.listen(3000);
朱啸
2023-03-14

Manish Kumar的答案非常准确-只是想包含一个Express 4语法变体来实现这一点:

function(req, res) {
  var csv = GET_CSV_DATA // Not including for example.

  res.setHeader('Content-disposition', 'attachment; filename=testing.csv');
  res.set('Content-Type', 'text/csv');
  res.status(200).send(csv);

}
 类似资料:
  • 问题内容: 最近,我开始使用node.js。在我的一个项目中完成一项需求时,我面临一个问题,即我应该能够动态地向csv文件中写入一些数据,并让它作为弹出窗口提示用户下载(使用保存和取消选项- 与我们通常一样)看到)。谷歌搜索一段时间后,我决定使用csv npm模块https://github.com/wdavidw/node-csv- parser 。我能够将数据写入文件并使用此模块保存。我想提示

  • 请有人给我指个正确的方向。

  • 我有一个csv格式的数据集。其中一个字段是“elem_type”。基于此类型,我需要创建不同的类型节点,并在使用csv load加载数据时,根据“elem_type”为csv的“列”赋予不同的名称,有什么方法可以做到这一点吗? 我的csv没有标头,数据如下所示: 基于第一个colmuns,即我的“elem_type”,我要加载数据并定义3种类型的节点(Person,Car,Boat)

  • 我有一个csv格式的数据集。其中一个字段是类型,类似于枚举。基于此类型,我需要在使用csv LOAD加载数据时创建不同的类型、节点和关系。您可以在csv中调用具有定义子类型的属性的超级类型的行。 我真的不知道如何在Cypher中做到这一点。我唯一的选择是将一个csv文件拆分为每种类型的csv文件,并运行不同的密码吗?

  • 如果我没弄错的话,树通常是一个列表,其中的元素按特定顺序排列。孩子们不在他们自己的子列表中,他们都在同一个列表中。 所以,我试图创建一个Tree类,其中包含TreeNodes(类)使用Tree类中的List。 我如何跟踪父母/孩子/叶子?如果父母“父母1”,有两个孩子“孩子A”和“孩子B”,我如何将他们联系在一起?

  • Text 节点的概念 文本节点(Text)代表元素节点(Element)和属性节点(Attribute)的文本内容。如果一个节点只包含一段文本,那么它就有一个文本子节点,代表该节点的文本内容。 通常我们使用父节点的firstChild、nextSibling等属性获取文本节点,或者使用Document节点的createTextNode方法创造一个文本节点。 // 获取文本节点 var textNo