私の問題は、Amazonへの画像のアップロードを機能させることです。ファイルをサーバーに保存せずにAmazonにアップロードするソリューションを探していました。
グーグルでpkgcloudを見つけ、README.md には次のように書かれています。
メソッドがストリームおよびパイプ対応になるように、特別な注意が払われています。
誰かがそれが何を意味するのか、そしてそれが私が探しているものであるかどうかを説明できますか?
私の問題は、Amazonへの画像のアップロードを機能させることです。ファイルをサーバーに保存せずにAmazonにアップロードするソリューションを探していました。
グーグルでpkgcloudを見つけ、README.md には次のように書かれています。
メソッドがストリームおよびパイプ対応になるように、特別な注意が払われています。
誰かがそれが何を意味するのか、そしてそれが私が探しているものであるかどうかを説明できますか?
うん、それはあなたが適切な種類のs3
ライブラリを見つけたことを意味します。
つまり、このライブラリは「ストリーム」を公開するということです。ストリームを定義する API は次のとおりです: http://nodejs.org/api/stream.html
ノードのストリーム インターフェイスを使用すると、読み取り可能なストリーム (この場合は POST の本文) を書き込み可能なストリーム (この場合は S3 アップロード) にパイプできます。
ストリームをサポートする別の種類のライブラリにファイル アップロードを直接パイプする方法の例を次に示します。
編集:これは例です
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!"))