首页 > 解决方案 > 如何替换从节点js中的CreateReadStream读取的文本

问题描述

我正在使用 fs.CreateReadStream() 在节点 js 中读取一个 json 文件,一旦读取该文件,我想替换一些文本并再次写入它,以便我可以使用它在我的“/download”中下载文件 express js路线。

我的问题是,有没有这样的可能性,我从 fs.CreateReadStream() 读取并替换一​​些文本并使其准备好下载,而不将文件保存在内存中。

我可以正常下载文件,但我需要替换一些文本并准备好下载。

我试过这个...

app.get("/download", function(req, res) {
    var fs = require("fs");
    const { uuid } = require('uuidv4');
    var data;
    var filename = "dashboard-" + (new Date()).toISOString() + ".ndjson";

    var readableStream = fs.createReadStream("C:/Files/node/download-file/lib/dashboard.ndjson");
    readableStream.setEncoding('utf8');

    readableStream.on("data", function(chunks) {
            data += chunks;
        })
        .on("end", function() {
            data.replace(/"description": *".*?"/g, '"description": "myyyyyyy new index"')
                .replace(/"title":" Dashboard --  0805"/, '"title":" Dashboard --  0805- *******"')
                .replace(/"id":"3f18d25a-ebe7-4c7b-9d84-c4d1ed07bfcf"/, '"id":"' + uuid() + '"')
                .replace(/"id":"y_0805"/g, '"id":"y_0805-testing"');
            console.log(data)

        })
        .on("error", function(err) {
            console.log(err);
        })
    res.set('content-disposition', `attachment; filename="${filename}"`);
    data.pipe(res)
})

标签: node.jsnode-streams

解决方案


推荐阅读