使用Node.js列出Google云端存储分区中的文件夹

时间:2018-06-02 17:51:24

标签: node.js google-cloud-platform google-cloud-storage

我一直在寻找一种方法来只检索存储桶中的目录,而不是它们中的内容。

根据Google Cloud Storage Docs,可以按前缀过滤:

constr speechToText = event.results[0][1].transcript

我尝试使用前缀:const Storage = require('@google-cloud/storage'); const storage = new Storage(); const options = { prefix: prefix, delimiter: '/' }; storage .bucket(bucketName) .getFiles(options) .then(results => { const files = results[0]; console.log('Files:'); files.forEach(file => { console.log(file.name); }); }) .catch(err => { console.error('ERROR:', err); }); 或前缀:""或前缀:"*"等几种组合,依此类推,但我无法让它只返回文件夹。

有人能够做到吗?

1 个答案:

答案 0 :(得分:0)

事实上,getFiles方法不会以您使用它的方式读取文件夹。我已经调整了this post中的代码来打印我的桶:

const storage = require('@google-cloud/storage');

const projectId = 'PROJECT_ID';
const gcs = storage({
    projectId: projectId
});

let bucketName = 'BUCKET_NAME';
let bucket = gcs.bucket(bucketName);
// bucket.getFiles({}, (err, files,apires) => {console.log(err,files,apires)});


let cb=(err, files,next,apires) => {
    /*console.log('Err:');
    console.log('Files:');
    console.log(files);*/
    console.log('Apires:');
    console.log(typeof apires);
    console.log(apires);
    console.log(apires.prefixes);
    if(!!next)
    {   
        bucket.getFiles(next,cb);
    }   
}

bucket.getFiles({delimiter:'/', autoPaginate:false}, cb);

/* 
// List folders inside folders
let cb=(err, files,next,apires) => {
    console.log(err,files,apires);
    if(!!next)
    {
        bucket.getFiles(next,cb);
    }
}
bucket.getFiles({prefix:'foo/', delimiter:'/', autoPaginate:false}, cb);
*/ 

而且,即使这在这种情况下没用,我建议您使用regular expression来确定名称的特定格式。