在NodeJS的pkgcloud中,“stream和pipe-capable”意味着什么

我的问题是让图像上传到亚马逊工作。 我正在寻找一个解决scheme,不保存在服务器上的文件, 然后将其上传到亚马逊。

使用谷歌search我发现pkgcloud和README.md它说:

已经给予了特别的关注,使方法是stream和pipe道的能力。

有人可以解释这是什么意思,如果这是我在找什么?

Yupp,这意味着你find了正确的s3库。

这意味着这个库暴露“stream”。 以下是定义stream的API: http : //nodejs.org/api/stream.html

使用节点的stream接口,您可以将任何可读stream(本例中为POST的主体)传递给任何可写stream(在本例中为S3上传)。

以下是如何将file upload直接传送到另一种支持stream的库的示例: 如何在不执行磁盘写入的情况下处理Express.js中的POST文件

编辑:这是一个例子

 var pkgcloud = require('pkgcloud'), fs = require('fs'); var s3client = pkgcloud.storage.createClient({ /* ... */ }); app.post('/upload', function(req, res) { var s3upload = s3client.upload({ container: 'a-container', remote: 'remote-file-name.txt' }) // pipe the image data directly to S3 req.pipe(s3upload); }); 

编辑:要完成回答在聊天中出现的问题:

req.end()会自动调用s3upload.end()感谢stream魔术。 如果OP在req的结尾想做任何事情,他可以轻松完成: req.on('end', res.send("done!"))