为了列出存储桶中的对象,您必须使存储桶匿名可读。转到开发人员控制台存储-> 浏览器。在编辑权限中选择/写入User - allUsers - Read。存储桶内的文件可以有任何 ACL。
之后可以列出文件如下:
Storage.bucket = 'mybucket';
Storage.listObjectsItems = function(prefix, delimiter, callback) {
var request = gapi.client.storage.objects.list({
'bucket' : Storage.bucket,
'prefix' : prefix,
'delimiter' : delimiter
});
request.execute(function(resp) {
console.log(resp);
callback(resp.items);
});
};
Storage.listObjectsPrefixes = function(prefix, delimiter, callback) {
var request = gapi.client.storage.objects.list({
'bucket' : Storage.bucket,
'prefix' : prefix,
'delimiter' : delimiter
});
request.execute(function(resp) {
console.log(resp);
callback(resp.prefixes);
});
};
您可以在此处阅读有关前缀和分隔符的更多信息:https ://cloud.google.com/storage/docs/json_api/v1/objects/list
具体示例:假设我们在控制台->存储->浏览器中有下一个存储桶结构:
mybucket/folder1/folder11/..
folder12/..
folder13/..
...
folder1n/..
称呼
Storage.listObjectsPrefixes('folder1/', '/',callback );
它将返回(作为回调的参数)folder1 中的所有文件夹。
我没有看到(可能是错误的?)使存储桶匿名可读的财务危险。它只能从有限的域访问,为什么有人会浏览我的存储桶的内容,即使他发现(如何?)这样的存储桶存在。