2016-12-04 19 views
0

私は画像を表す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' 
}); 

任意の助けをいただければ幸いです!

答えて

1

あなたが単にimgDecodedBuffer.dataの値に入っていると思われるバッファを単に渡すだけなら、それはうまくいくはずです。

関連する問題