探しているものに近い投稿を見つけましたが、必要なものをうまく実装できませんでした。一般的な流れは次のとおりです。
- base64 データとして、残りの会場データを含む写真を送信します
- データプレフィックスが存在する場合は削除するため、画像のbase64データのみが得られます
var base64data = venue.image.replace(/^data:image\/png;base64,|^data:image\/jpeg;base64,|^data:image\/jpg;base64,|^data:image\/bmp;base64,/, '');
- MongoDB 経由で Base64 データを GridFS に保存します (私はgridfstoreを使用しています)
- 次に、リクエストに応じて、URL を介して生の画像ファイルとして画像を取得したいと思います。
// generic images route
server.get(version+'/images/:id', function(req, res) {
gridfstore.read( req.params.id, function(error,data) {
res.writeHead(200, {
'Content-Type': 'image/jpeg',
'Content-Length': data.buffer.length
});
res.end(data.buffer);
});
});
基本的に、このメソッドは GridFS に格納されている Base64 バイトを返します。他の方法を試しましたが、生の画像が返されません。
次のような URL を使用して画像を取得したいと思います。
http://[localhost]/1/images/11dbcef0-257b-11e3-97d7-cbbea10abbcb
ブラウザ トレースのスクリーンショットを次に示します。