【问题标题】:Problem generating buffer for nodejs csv file creation为nodejs csv文件创建生成缓冲区的问题
【发布时间】:2020-06-10 08:31:08
【问题描述】:

我能够使用以下数据生成 csv 文件。我正在使用一个能很好地生成文件的nodejs库“csv-writer”。我的问题是我需要一种方法来返回缓冲区而不是文件本身。原因是我需要通过 sftp 将文件上传到远程服务器。

如何修改这段代码以启用缓冲区响应?谢谢。

...
const csvWriter = createCsvWriter({
        path: 'AuthHistoryReport.csv',
        header: [
          {id: 'NAME', title: 'msg_datetime_date'},
          {id: 'AGE', title: 'msg_datetime'}
        ]
   });

var rows = [
    { NAME: "Paul", AGE:21 },
    { NAME: "Charles", AGE:28 },
    { NAME: "Teresa", AGE:27 },
];

csvWriter
        .writeRecords(rows)
        .then(() => {
          console.log('The CSV file was written successfully');
        });

...

【问题讨论】:

    标签: javascript node.js file express buffer


    【解决方案1】:

    使用fs.readFile('AuthHistoryReport.csv', data => ... ); 读取您自己的文件。如果不指定编码,则返回的数据是缓冲区,而不是字符串。

    fs.readFile('AuthHistoryReport.csv', 'utf8', data => ... ); 返回一个字符串

    fs.readFile('AuthHistoryReport.csv', data => ... ); 返回一个缓冲区

    Nodejs file system #fs.readFile

    【讨论】:

    • 那么在创建 csv 文件后,我将其再次读入缓冲区?我应该使用 express 来创建 csv 而不是 csv-writer 库吗?
    • So after creating the csv file, I read it again into buffer? --> 这就是我要做的。 Should I use express to create the csv --> 呃? Express 与文件写入有什么关系? :) 您已经使用库将 CSV 文件写入磁盘
    【解决方案2】:

    您需要使用原生包fs将创建的文件存储在缓冲区中

    const fs = require('fs');
    
    const buffer = fs.readFileSync('AuthHistoryReport.csv');
    

    【讨论】:

    • 是的,这几乎是我的答案,除了这个解决方案是同步的,因此会阻塞线程:)
    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多