我的問題是讓圖像上傳到亞馬遜工作。 我正在尋找一個解決方案,不保存服務器上的文件,然後然後將其上傳到亞馬遜。什麼「流和pipe-capable」意味着在pkgcloud在NodeJS
谷歌搜索,我發現pkgcloud並在README.md它說:
特別注意了,這樣的方法是流和 管能力。
有人可以解釋這是什麼意思,如果這是我在找什麼?
我的問題是讓圖像上傳到亞馬遜工作。 我正在尋找一個解決方案,不保存服務器上的文件,然後然後將其上傳到亞馬遜。什麼「流和pipe-capable」意味着在pkgcloud在NodeJS
谷歌搜索,我發現pkgcloud並在README.md它說:
特別注意了,這樣的方法是流和 管能力。
有人可以解釋這是什麼意思,如果這是我在找什麼?
Yupp,這意味着你找到了合適的s3
庫。
這是什麼意思是這個庫暴露「流」。這裏是定義流的API:http://nodejs.org/api/stream.html
使用節點的流接口,您可以將任何可讀流(本例中爲POST的主體)傳遞給任何可寫流(在本例中爲S3上傳)。
下面是如何管道的文件直接上傳到其他類型的庫,支持流的例子:How to handle POSTed files in Express.js without doing a disk write
編輯:下面是一個例子
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!"))
它會被保存在內存中嗎? – nick
它不會被「保存」,但會在'pipe()'期間留在內存中,是的。 :) – rdrey
argh。你認爲有什麼「更好的辦法」做文件上傳到亞馬遜? – nick