2016-07-12 8 views
0

私の帆jsアプリケーションでAWS SDKを使用しようとしています。私はこのエラーが発生し続ける:[オブジェクトオブジェクト]の長さを判断できません。誰もがこれを引き起こして何を知っていますか?ここAWS SDKを使用したノードJSファイルアップロード|エラー:[オブジェクトオブジェクト]の長さを判断できません

コードである:

VaRのAWSは=( 'AWS-SDK')を必要とします。

   var s3bucket = new AWS.S3({ 
       accessKeyId : 'xxx', 
       secretAccessKey : 'xxx', 
       params: {Bucket: 'sweetestspots'} 
       }); 
       var body = req.file('cover'); 

       s3bucket.upload({Key: 'filename', ACL:'public-read', Body:body}, function(err, data) { 
       console.log ("data") 
       console.log (data) 
       if (err) { 
        console.log("Error uploading data: ", err); 
        return res.send("err"); 

       } else { 
        console.log("Successfully uploaded data to myBucket/myKey"); 
        console.log(data); 

        return res.send("uploaded"); 
       } 
       }); 
+0

あなたがアップロードしている 'body'の価値は何ですか? – kiro112

+0

本文は画像であるフロントエンドから解析されたreq.file( 'cover')です。 – steph

+1

あなたの秘密鍵を表示しないでください。 –

答えて

0

aws

に応じBodyは以下のように、あなたのファイルをストリーミングする必要があるバッファ、ブロブ、またはストリーム

upload(params = {}, [options], [callback]) 

Uploads an arbitrarily sized buffer, blob, or stream, using intelligent concurrent handling of parts if the payload is large enough. You can configure the concurrent queue size by setting options.

var params = {Bucket: 'bucket', Key: 'key', Body: stream}; 
s3.upload(params, function(err, data) { 
    console.log(err, data); 
}); 

の値を持つ必要がありますfs.createReadStream(req.file.path)して送ってくださいn Bodyパラメータ

1

こんにちは、同じ問題が発生しました。 私はあなたに私のコードを送っています。

  var s3bucket = new AWS.S3({ 
       accessKeyId: 'xxx', 
       secretAccessKey: 'xxx+xxx', 

      }); 


      var body = new Buffer(req.file('cover'), 'base64'); 

      var params = { 
       Bucket: 'sweetestspots', 
       Key: 'yourimagename', 
       Body: body, 
       ContentEncoding: 'base64', 
       ContentType: 'image/png', 
       ACL: 'public-read' 
      }; 

      s3bucket.upload(params, function(err, data) { 
       if (err) { 
        console.log("Error uploading data: ", err); 
       } else { 
        console.log("Successfully uploaded data to myBucket" + JSON.stringify(data)); 

       } 
      }); 

このコードを試してください。

+0

ありがとう、私は本当にあなたの助けに感謝します。私は今バッファについてのエラーを取得しています。それは言う:TypeError:最初の引数は、文字列、バッファ、ArrayBuffer、配列、または配列のようなオブジェクトでなければなりません。 – steph

+0

問題は次の行によって引き起こされたようです: var body = new Buffer(req.file( 'cover')、 'base64'); – steph

+1

キーを貼り付けないでください! (そして私はそれらを素早く変更したい) – Clarkie

関連する問題