aws-sdk获取文件信息

时间:2017-03-07 11:22:12

标签: javascript node.js amazon-web-services amazon-s3

我正在尝试使用(len(lst)+1) // 2节点模块从Amazon S3 server上的文件中获取文件信息。

我想要的是文件名,文件类型和大小。

我没有运气就尝试了以下方法:

aws-sdk

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

通过他们的文档,我似乎无法找到任何其他方法来提供我需要的信息。

所以我的问题是如何获得上述信息?

2 个答案:

答案 0 :(得分:3)

以下是获取存储桶中所有对象的文件名,大小和内容类型的代码。

  • 更改存储桶名称

  • 相应地从 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

答案 1 :(得分:1)

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];
};