如何将 fs.createReadstream 与 fs.promises 一起使用
Posted
技术标签:
【中文标题】如何将 fs.createReadstream 与 fs.promises 一起使用【英文标题】:How can I use fs.createReadstream with fs.promises 【发布时间】:2019-09-28 03:49:23 【问题描述】:我使用require("fs").promises
只是为了避免使用回调函数。
但是现在,我也想使用fs.createReadstream
来附加一个带有 POST 请求的文件。
我该怎么做?
或者在这种情况下改变 createReadstream 是什么?
还是应该使用require("fs")
?
【问题讨论】:
【参考方案1】:我是这样做的:
import promises as fs, createReadStream from "fs"
await fs.mkdir("path...");
const buff = createReadStream("path ...")
【讨论】:
【参考方案2】:因此,通过使用const fs = require('fs').promises;
,您只能访问fs
模块的promise 版本。根据规范,File System Promises API 中没有等效的 createReadStream
条目。如果您想要该功能,除了 fs 的承诺版本之外,您还需要存储对它的引用。
我鼓励任何阅读本文的人在文件顶部使用以下内容,以包含 Promise api 和 createReadStreams 的能力。
const fs = require('fs').promises;
const createReadStream = require('fs').createReadStream;
您创建的读取流将如下所示(注意不再包括前置的fs.
):
createReadStream('/your/path/here');
同样重要的是要注意:
根据规范,您最终会希望改用以下内容(免责声明,当前开箱即用的节点在没有某些标志/依赖项的情况下无法执行此操作)
import createReadStream from 'fs';
【讨论】:
【参考方案3】:您的问题有点宽泛,但我可以为您指出一些有用的软件包。它并没有涵盖几乎所有的功能,但是 fs-extra 包会自动使很多 fs
函数返回一个承诺,我绝对建议这样做。然后你总是可以同时使用普通的fs
。至于fs.createReadStream()
,您可能只想将您需要的内容包装在new Promise()
中。
【讨论】:
以上是关于如何将 fs.createReadstream 与 fs.promises 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
node.js 中 fs.createReadStream 与 fs.readFile 的优缺点是啥?
Node.js 中的 fs.ReadStream 和 fs.createReadStream 有啥区别吗?
为啥 fs.createReadStream ... pipe(res) 锁定读取文件?
fs.createreadstream 中是不是有类似“结束”的“开始”?