我已经能够将loopback框架连接到亚马逊S3帐户,以从它创建REST API。但是,它只显示整个帐户的容器和文件级别的信息。
我的目标是创建API,允许用户编写不同级别的文件夹名称,然后显示该路径的内容。
例如:父child1孩子1-孩子toys.txt child2 notes.txt孩子2-孩子toys.txt
因此,如果用户输入父项/子项2,rest api应该从那里开始显示内容,即{notes.txt,子项2-子项/},深度为1
我已经能够在storage-service.js
的getFiles
函数中硬连接一个存储桶
StorageService.prototype.getFiles = function (container, options, cb) {
...
return this.client.getFiles('hardwiredbucketname', options, function (err, files) {
...
};
现在,我想创建一些API,让我可以指定文件夹名称,并将其所有内容显示到一个深度。
发布于 2016-09-22 10:27:25
这里首先要注意的是,S3中没有文件夹。S3具有扁平的结构。您应该先阅读Working with S3 folders。
当从节点使用S3时,最好的方法是使用AWS SDK。为了获取文件夹内容,您可以创建接受存储模型上的路径参数的远程方法,然后可以使用listObjecstV2方法获取对象列表。
var AWS = require('aws-sdk');
var s3 = new AWS.S3()
var params = {
Bucket: 'hardwiredbucketname',
Prefix: 'parent/',
Delimiter: '/'
};
s3.listObjectsV2(params, function(err, data){
if (err) console.log(err, err.stack);
console.log(data);
});
从回调中获取“data”对象,然后解析“Contents”和“CommonPrefixes”属性以获取文件和文件夹。
https://stackoverflow.com/questions/39339089
复制