如何将 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 中是不是有类似“结束”的“开始”?

request() 和 fs.createReadStream() 没有返回“正确”的值

NodeJs - 使用 fs.createReadStream 读取文件时出错