我尝试用pipeTo将一个上传到nodejs 18.12.的ReadableStream文件写入硬盘上的文件。
const fs = require('fs');
var path = __dirname + '/test.png';
const writeStream = fs.createWriteStream(path);
// stream is a ReadableStream object
stream.pipeTo(writeStream).on('finish', async () => {
console.log('DONE');
})
与
TypeError: ReadableStream.prototype.pipeTo's first argument must be a WritableStream
但是我还没有找到任何关于如何正确使用pipeTo并将数据存储到文件中的文档。搜索WritableStream也没有帮助我。我使用的是graphql-yoga 3.x,ReadableStream是我从框架中得到的。
我还尝试了here中的解决方案,将流转换为Readable
const { Readable } = require('node:stream');
var readStream = new Readable().wrap(stream);
型
失败的代码为stream.on is not a function
我还尝试了here的Readable.fromWeb解决方案
const writeStream = fs.createWriteStream(path);
var readStream = Readable.fromWeb(stream);
readStream.pipe(writeStream).on('finish', async () => {
console.log('DONE');
})
这让我犯了一个奇怪的错误
TypeError: The "readableStream" argument must be an instance of ReadableStream.
Received an instance of ReadableStream
我现在也在graphql yoga网站上找到了一个example的v2版本,但是它也不起作用。
1条答案
按热度按时间lrl1mhuk1#
管道流如下所示:
可读流-管道到-〉转换流-管道到-〉可写流
但是你必须创建一个干净的WritableStream,这就像一个缓冲区,用于向某个地方写入内容。
readableStream是从某个对象读取字节的流,在您的情况下,从文件读取照片是可读流,如下所示:
这段代码将一个文件转换成一个读流,之后你必须创建一个写流,例如(在我的例子中是响应),但是你可以写另一个文件,例如通过管道传输到这个文件,如下所示: