2017-03-07 93 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]; 
};