如何在storage.getFiles()响应中区分文件夹与文件?
区分Cloud Storage中的文件夹与文件
Cloud Storage本质是对象存储,所谓的“文件夹”其实是前缀以斜杠结尾的空对象,真正的文件不会以斜杠结尾。你可以通过两种方式区分:
方式一:直接判断对象名称后缀
遍历images[0]里的每个对象,通过name属性的结尾字符判断:
const [files] = await storage.bucket().getFiles({ prefix: 'images' }); for (const file of files) { const isFolder = file.name.endsWith('/'); if (isFolder) { console.log(`文件夹:${file.name}`); } else { console.log(`文件:${file.name}`); } }
方式二:用参数优化查询结果
如果只想获取images下的直接文件和子文件夹,添加delimiter: '/'参数,返回结果会自动把两者分开:
const [files, folderInfo] = await storage.bucket().getFiles({ prefix: 'images/', delimiter: '/' }); console.log("直接文件列表:", files); console.log("子文件夹前缀:", folderInfo.prefixes); // prefixes数组里是所有子文件夹的路径,比如images/subfolder/
这种方式更高效,不用自己遍历判断,Cloud Storage直接帮你拆分了结果。
内容的提问来源于stack exchange,提问作者cbdeveloper
相关产品推荐
相关产品推荐

