2017-03-07 37 views
1

ノード番号aws-sdkノードモジュールを使用して、Amazon S3 serverのファイルからファイル情報を取得しようとしています。aws-sdkファイル情報を取得する

私が出したいのは、ファイル名、ファイルの種類とサイズです。私は運なしで、次の方法を試みてきた

s3.headObject(params, function (err, data) { 
    if (err) { 
     console.log(err, err.stack) 
    } 
    else { 
     d.resolve(data); 
    } 
}); 

そして

そのドキュメントを通じて探し
s3.getObject(params, function (err, data) { 
    if (err) { 
     console.log(err, err.stack) 
    } 
    else { 
     d.resolve(data); 
    } 
}); 

を私は私が必要とする情報を提供する任意の他の方法を見つけるように見える傾けます。

私の質問には、上記の情報をどのように取得するのですか?

+0

バケット内のすべてのファイルのファイル名、サイズ、および長さを取得しようとしていますか? – notionquest

+0

'headObject'メソッドは何を返していますか?それを呼び出すためにどのようなパラメータを使用していますか? – Sangharsh

答えて

2

バケット内に存在するすべてのオブジェクトのファイル名、サイズ、およびコンテンツタイプを取得するコードは次のとおりです。

  • 変更バケット名

  • 応じconfig.jsonからのアクセスキーをロード

コード: -

var AWS = require('aws-sdk'); 
    // Load credentials and set region from JSON file 
    AWS.config.loadFromPath('./config.json'); 

// Create S3 service object 
s3 = new AWS.S3({ apiVersion: '2006-03-01' }); 

var bucketName = 'yourBucketName'; 

var params = { 
    Bucket: bucketName 
}; 

var headParams = { 
    Bucket: bucketName 
}; 

listAllKeys(); 
function listAllKeys() { 
    s3.listObjectsV2(params, function (err, data) { 
     if (err) { 
      console.log(err, err.stack); // an error occurred 
     } else { 
      var contents = data.Contents; 
      contents.forEach(function (content) { 
       //console.log(JSON.stringify(content));     
       headParams["Key"] = content.Key; 
       s3.headObject(headParams, function (err, headObjectData) { 
        if (err) { 
         console.log(err, err.stack); 
        } else { 
         console.log("1. File name :" + content.Key + ";" + " 2. File size :" + content.Size + ";" + " 3. Content-Type :" + headObjectData.ContentType); 
        } 
       }); 
      }); 

      if (data.IsTruncated) { 
       params.ContinuationToken = data.NextContinuationToken; 
       console.log("get further list..."); 
       listAllKeys(); 
      } 

     } 
    }); 
} 

サンプル出力: -

1. File name :index.html; 2. File size :48; 3. Content-Type :text/html 
0

s3.headObjectが正常に動作します。以下のサンプルコードを見つけることができます

let primaryBucket = primarys3bucketname; 
var headParams = { 
    Bucket: primaryBucket, 
}; 
let size = ''; 
headParams["Key"] = "/sample/path/to/filename.pdf"; 
s3.headObject(headParams).promise().then((headObjectData) => { 
    size = this.bytesToSize(headObjectData.ContentLength); 
}); 


function bytesToSize(bytes) { 
    var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; 
    if (bytes == 0) return '0 Byte'; 
    var i = parseInt(Math.floor(Math.log(bytes)/Math.log(1024))); 
    return Math.round(bytes/Math.pow(1024, i), 2) + ' ' + sizes[i]; 
}; 
関連する問題