tôi đặt lên một chút module trong đó liệt kê nội dung của một thư mục "" bạn cho nó:
s3ls({bucket: 'my-bucket-name'}).ls('/', console.log);
sẽ in một cái gì đó như thế này:
{ files: [ 'funny-cat-gifs-001.gif' ],
folders: [ 'folder/', 'folder2/' ] }
Và rằng
s3ls({bucket: 'my-bucket-name'}).ls('/folder', console.log);
sẽ in
{ files: [ 'folder/cv.docx' ],
folders: [ 'folder/sub-folder/' ] }
Và đây là s3ls.js
:
var _ = require('lodash');
var S3 = require('aws-sdk').S3;
module.exports = function (options) {
var bucket = options.bucket;
var s3 = new S3({apiVersion: '2006-03-01'});
return {
ls: function ls(path, callback) {
var prefix = _.trimStart(_.trimEnd(path, '/') + '/', '/');
var result = { files: [], folders: [] };
function s3ListCallback(error, data) {
if (error) return callback(error);
result.files = result.files.concat(_.map(data.Contents, 'Key'));
result.folders = result.folders.concat(_.map(data.CommonPrefixes, 'Prefix'));
if (data.IsTruncated) {
s3.listObjectsV2({
Bucket: bucket,
MaxKeys: 2147483647, // Maximum allowed by S3 API
Delimiter: '/',
Prefix: prefix,
ContinuationToken: data.NextContinuationToken
}, s3ListCallback)
} else {
callback(null, result);
}
}
s3.listObjectsV2({
Bucket: bucket,
MaxKeys: 2147483647, // Maximum allowed by S3 API
Delimiter: '/',
Prefix: prefix,
StartAfter: prefix // removes the folder name from the file listing
}, s3ListCallback)
}
};
};
Nguồn
2016-10-14 06:07:01
S3 không có khái niệm về thư mục/tập tin, vv… nó chỉ có các khóa - bạn có thể bắt chước cấu trúc thư mục bằng cách sử dụng/trong các phím. – Alex
Vui lòng hiển thị mã nào bạn có cho đến nay – Alex
var AWS = require ('aws-sdk'); AWS.config.update ({accessKeyId: 'mykey', bí mậtAccessKey: 'mysecret', region: 'myregion'}); var s3 = AWS.S3 mới(); var params = { Nhóm: 'mystore.in', Dấu phân cách: '', Tiền tố: 's/5469b2f5b4292d22522e84e0/ms.files' }; s3.listObjects (thông số, hàm (err, dữ liệu) { nếu (err) ném sai; console.log (dữ liệu); }); – Rohit