私は画像を表すbase64でエンコードされた文字列を受け取るExpressアプリケーションを作成しています。今、私はその文字列をAWS S3にアップロードする方法がわからないので、エンコードされたイメージ文字列データを読み込み、デコードし、fs
を使用してファイルを書き込んだ後、アップロードしようとしています。私は生のファイルを取り込むエンドポイントでこれを動作させ、その内容はすべてAWS s3に正しくアップロードされます。ノードを使用してS3に画像をアップロードするには
私が上記のことをしようとすると、私はS3にアップロードすることができますが、ファイルは0kbで空です。理由はわかりません。私はちょうどstringDataを取って、テストファイルにファイルを書き込むことをテストし、それは動作します。しかし、私はs3にアップロードしようとすると、ファイルが表示されますが空です。ここに私のコードは次のとおりです。ここで
router.post('/images/tags/nutritionalInformation/image/base64encoded', function (req, res) {
console.log(req.body.imageString);
var base64Stream = req.body.imageString;
var imgDecodedBuffer = decodeBase64Image(base64Stream);
console.log(imgDecodedBuffer);
// write to image file
var prefix = guid().toString() + ".jpg";
var filePath = './uploads/' + prefix;
console.log(filePath);
fs.writeFile(filePath, imgDecodedBuffer.data, function(err) {
console.log(err);
});
var stream = fs.createReadStream(filePath);
console.log(stream);
return s3fsImpl.writeFile(prefix, stream).then(function() {
fs.unlink(filePath, function (err) {
if (err) {
console.error(err);
}
});
});
})
は、関連するimport文です:
var fs = require('fs');
var s3fs = require('s3fs');
var multiparty = require('connect-multiparty'),
multipartyMidleware = multiparty();
var s3fsImpl = new s3fs('blahblah', {
accessKeyId: 'ACCESS_KEY_ID',
secretAccessKey: 'SECRET'
});
任意の助けをいただければ幸いです!