"streams and pipe-capable"在 NodeJS 中的 pkgcloud 中意味着什么



我的问题是如何将图像上传到亚马逊。我正在寻找一种解决方案,它不会将文件保存在服务器上,然后将其上传到亚马逊。

我在谷歌上找到了pkgcloud,在README.md上显示:

特别注意的是,方法是流和管道能力。

有人能解释一下这意味着什么吗?如果这是我想要的吗?

Yupp,这意味着您已经找到了正确类型的s3库。

这意味着这个库公开了"流"。以下是定义流的API:http://nodejs.org/api/stream.html

使用节点的流接口,您可以将任何可读的流(在本例中为POST的主体)管道传输到任何可写的流(在此例中为S3上传)。

下面是一个如何将文件直接上传到另一种支持流的库的例子:如何在Express.js中处理POSTed文件而不进行磁盘写入

编辑:这是一个的例子

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(),这得益于流魔术。如果OP想在req端做任何其他事情,他可以很容易地做到:req.on('end', res.send("done!"))

最新更新