aws-sdk获取文件信息

问题描述 投票:1回答:2

我想使用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);
    }
});

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

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

javascript node.js amazon-web-services amazon-s3
2个回答
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
投票

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];
};
© www.soinside.com 2019 - 2024. All rights reserved.