Estoy tratando de obtener la información del archivo de un archivo en mi Amazon S3 server usando el módulo de nodo aws-sdk .
Lo que quiero obtener es el nombre del archivo, el tipo y el tamaño del archivo.
He intentado los siguientes métodos sin suerte:
s3.headObject(params, function (err, data) { if (err) { console.log(err, err.stack) } else { d.resolve(data); } });Y
s3.getObject(params, function (err, data) { if (err) { console.log(err, err.stack) } else { d.resolve(data); } });Mirando a través de su documentación, parece que no puedo encontrar ningún otro método que me brinde la información que necesito.
Así que mi pregunta es ¿cómo obtengo la información anterior?
Aquí está el código para obtener el nombre del archivo, el tamaño y el tipo de contenido de todos los objetos presentes en un depósito.
Cambiar el nombre del cubo
Cargue sus claves de acceso desde config.json en consecuencia
Código:-
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(); } } }); }Salida de muestra: -
1. File name :index.html; 2. File size :48; 3. Content-Type :text/htmls3.headObject funciona bien. Puede encontrar el código de muestra a continuación
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]; };