私のノードjsコードは、自分のサーバーからローカルのpngファイルtmp.pngを開き、amazon S3を保存しようとします。私は問題を抱え続けており、エンコーディングと関係があると思われます。それがうまく動作する唯一の方法は、base64エンコーディング(私は自分の写真には望ましくない)です。awssumとnodejsの画像をamazonに保存するS3
fs = require('fs');
var awssum = require('awssum');
var amazon = awssum.load('amazon/amazon');
var s3Service = awssum.load('amazon/s3');
var s3 = new s3Service('mykey', 'mysecret', 'account', amazon.US_WEST_1);
fs.readFile('./tmp.png', function (err, data){
if(err){
console.log("There was an error opening the file");
} else {
s3.PutObject({
BucketName : 'my-bucket',
ObjectName : 'tmp.png',
ContentType : 'image/png',
ContentLength : data.length,
Body : data,
}, function(err, data) {
if(err){
console.log("There was an error writing the data to S3:");
console.log(err);
} else {
console.log("Your data has been written to S3:");
console.log(data);
}
});
}
});
明らかに、my-bucketは実際には私の一意のバケット名です。私がアマゾンから返信したメッセージは、要求のタイムアウトです:
タイムアウト時間内にサーバーとのソケット接続が読み書きされませんでした。アイドル状態の接続は閉じられます。
注このコードはv0.4がおよそからAwsSum(マイライブラリ)の古いバージョンを使っている:キーファイルを読み込むためのファイルサイズとfs.createReadStreamためfs.stat使用することでした。新しいバージョンv0.5以上では構文が少し異なるので、AwsSumに付属のexamples/folderを調べる価値があります。 – chilts