【发布时间】:2019-09-12 19:44:14
【问题描述】:
如何获取可写流并从缓冲区返回可读流?
我有以下内容可以将来自 ftp 服务器的数据写入块数组:
let chunks = []
let writable = new Writable
writable._write = (chunk, encoding, callback) => {
chunks.push(chunk)
callback()
}
然后我正在创建一个新的读取流:
let readable = new ReadStream()
然后我尝试将可写的管道传输到可读的管道,但这似乎不起作用:
“ReadStream”类型的参数不能分配给“WritableStream”类型的参数。
writable.pipe(readable)
这是整个方法:
export class FTP {
readStream(filePath, options = {}) {
let conn = this.getConnection(this.name)
if (!conn) return Buffer.from('')
filePath = this.forceRoot(filePath)
let chunks = []
let writable = new Writable
writable._write = (chunk, encoding, callback) => {
chunks.push(chunk)
callback()
}
let readable = new ReadStream()
conn.client.download(writable, filePath, options.start || undefined)
writable.pipe(readable)
return readable
}
}
然后我从流中读取并将输出通过管道传输到从http.createServer() 创建的响应对象,如下所示:
let stream = store.readStream(file, { start, end })
.on('open', () => stream.pipe(res))
.on('close', () => res.end())
.on('error', err => res.end(err))
【问题讨论】:
标签: javascript node.js