I Si vous utilisez la bibliothèque client GCS de NodeJS et que vous voulez lister les répertoires dans votre seau, comment faites-vous ?
Réponse
Trop de publicités?Tout d'abord, ajoutez la dépendance de la bibliothèque client GCS NodeJS dans votre fichier de configuration. package.json
en exécutant :
npm -i @google-cloud/storage --save
Puis ajoutez ceci dans votre code pour lister tous les fichiers :
const storage = require('@google-cloud/storage');
...
const projectId = '<<<<<your-project-id-here>>>>>';
const gcs = storage({
projectId: projectId
});
let bucketName = '<<<<<your-bucket-name-here>>>>>';
let bucket = gcs.bucket(bucketName);
bucket.getFiles({}, (err, files,apires) => {console.log(err,files,apires)});
Cela donnera tous les fichiers avec le chemin complet dans files
.
Pour lister uniquement les répertoires, vous devez contourner une bizarrerie de la bibliothèque client qui vous demande de ne pas utiliser la pagination automatique et qui renvoie un argument supplémentaire à la CB. Pour ce faire, modifiez le code comme suit :
let cb=(err, files,next,apires) => {
console.log(err,files,apires);
if(!!next)
{
bucket.getFiles(next,cb);
}
}
bucket.getFiles({delimiter:'/', autoPaginate:false}, cb);
Cela renverra une liste de répertoires sous le chemin Root avec des traces /
en apires.prefixes
.
Pour lister uniquement les répertoires sous foo/
l'annuaire utilise ce code :
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);