以下行将从指定的 url
变量下载图像文件:
var filename = path.join(__dirname, url.replace(/^.*[\\\/]/, ''));
request(url).pipe(fs.createWriteStream(filename));
这些行将获取该图像并保存到 MongoDB GridFS:
var gfs = Grid(mongoose.connection.db, mongoose.mongo);
var writestream = gfs.createWriteStream({ filename: filename });
fs.createReadStream(filename).pipe(writestream);
像这样链接 pipe
会引发 Error: 500 Cannot Pipe。不可管道。
request(url).pipe(fs.createWriteStream(filename)).pipe(writestream);
这是因为图像文件还没有准备好读取,对吧?我应该怎么做才能解决这个问题?错误:500 无法管道。不可管道。
使用以下:Node.js 0.10.10、mongoose、request 和 gridfs-stream 库.
最佳答案
request(url).pipe(fs.createWriteStream(filename)).pipe(writestream);
和这个是一样的:
var fileStream = fs.createWriteStream(filename);
request(url).pipe(fileStream);
fileStream.pipe(writestream);
所以问题是您试图将 .pipe
一个 WriteStream
插入另一个 WriteStream
。
关于node.js - 如何在 Node.js 0.10 中立即使用读取流链接写入流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098400/