node.js - 如何替换从节点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)
})
解决方案
推荐阅读
- jacoco - 如何忽略 Jacoco 的 lombok.@UtilityClass?
- datetime - Dataweave 2 - 无法将字符串强制转换为 DateTime
- transactions - 如何在 Keycloak SPI 扩展中编写简单的事务包装器?
- python - 在执行 I/O 密集型任务时,20 个进程中的 400 个线程优于 4 个进程中的 400 个线程
- css - 在 p:dataTable 中过滤后禁用列大小调整
- javascript - 在javascript中查找布尔值的变量名
- alloy - 合金分析仪没有准确执行我的运行命令
- delphi - 类或记录(
) - c++ - 如何处理 std::vector<...>::size_type 为 int
- java - 增量运算符在运行和调试时的工作方式不同