Cette rubrique explique comment répertorier tous les objets, un nombre spécifique d'objets et les objets dont les noms contiennent un préfixe donné dans un compartiment Object Storage Service (OSS).
Méthodes
Appelez la méthode list ou listV2 pour répertorier jusqu'à 1 000 objets à la fois dans un compartiment. Configurez les paramètres pour adapter le listage à vos besoins : définir un point de départ, lister les objets et sous-répertoires d'un dossier spécifique ou paginer les résultats. Les différences entre les méthodes list et listV2 sont détaillées ci-dessous :
L'appel de la méthode
listrenvoie par défaut les informations relatives aux propriétaires des objets.-
Avec la méthode
listV2, vous devez configurer le paramètrefetch-ownerpour indiquer si les informations sur les propriétaires doivent figurer dans la réponse.RemarqueNous vous recommandons d'utiliser la méthode
listV2pour lister les objets d'un compartiment avec gestion des versions.
Les tableaux suivants décrivent les paramètres configurables lors de l'appel des méthodes list et listV2 .
-
Appeler la méthode list pour répertorier les objets
Le tableau suivant présente les paramètres disponibles avec la méthode
list.Paramètre
Type
Description
prefix
string
Préfixe que les noms des objets listés doivent contenir.
delimiter
string
Caractère utilisé pour regrouper les objets par nom.
marker
string
Nom de l'objet à partir duquel commence le listage. Si ce paramètre est défini, seuls les objets dont le nom suit alphabétiquement la valeur de
markersont renvoyés.max-keys
number \
string
Nombre maximal d'objets renvoyés.
encoding-type
'url' \
''
Indique que les noms d'objets dans la réponse sont encodés en URL.
-
Appeler la méthode listV2 pour répertorier les objets
Le tableau suivant détaille les paramètres utilisables avec la méthode
listV2.Paramètre
Type
Description
prefix
string
Préfixe que les noms des objets listés doivent contenir.
continuation-token
string
Jeton indiquant la position à partir de laquelle reprendre le listage.
delimiter
string
Caractère utilisé pour regrouper les objets par nom.
max-keys
number \
string
Nombre maximal d'objets renvoyés.
start-after
string
Nom de l'objet à partir duquel commence le listage. Si ce paramètre est défini, seuls les objets dont le nom suit alphabétiquement la valeur de
start-aftersont renvoyés.fetch-owner
boolean
Indique si les informations sur les propriétaires des objets doivent être incluses dans la réponse.
encoding-type
'url' \
''
Indique que les noms d'objets dans la réponse sont encodés en URL.
Répertorier les objets avec un listage simple
L'exemple de code suivant montre comment lister les objets d'un compartiment spécifié. Par défaut, jusqu'à 100 objets sont retournés.
-
Appeler la méthode list pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); async function list () { // By default, if no parameter is specified, up to 100 objects can be returned. const result = await client.list(); console.log(result); } list(); -
Appeler la méthode listV2 pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); async function list () { // By default, if no parameter is specified, up to 100 objects can be returned. const result = await client.listV2(); console.log(result); } list();
Répertorier un nombre spécifique d'objets dans un compartiment
L'exemple de code suivant illustre l'utilisation du paramètre max-keys pour limiter le nombre d'objets listés.
-
Appeler la méthode list pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); async function list () { const result = await client.list({ // Specify that the first 10 objects in alphabetical order are returned. "max-keys": 10 }); console.log(result); } list(); -
Appeler la méthode listV2 pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); async function list () { const result = await client.listV2({ // Specify that the first 10 objects in alphabetical order are returned. "max-keys": 10 }); console.log(result); } list();
Répertorier les objets dont les noms contiennent un préfixe spécifié
L'exemple de code suivant montre comment utiliser le paramètre prefix pour filtrer les objets dont le nom commence par une chaîne donnée.
-
Appeler la méthode list pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); async function list () { const result = await client.list({ // List 10 objects. "max-keys": 10, // List objects whose names contain the foo/ prefix. prefix: 'foo/' }); console.log(result); } list(); -
Appeler la méthode listV2 pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); async function list () { const result = await client.listV2({ // List 10 objects. "max-keys": 10, // List objects whose names contain the foo/ prefix. prefix: 'foo/' }); console.log(result); } list();
Répertorier les objets dont les noms suivent alphabétiquement un objet donné
L'exemple de code suivant montre comment lister les objets dont le nom suit alphabétiquement la valeur définie par les paramètres marker ou startAfter.
-
Appeler la méthode list pour répertorier les objets
Le paramètre
markerdéfinit l'objet à partir duquel commence le listage.const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); // List the objects whose names are alphabetically after the object name test. By default, up to 100 objects are listed. const marker = 'test' async function list () { const result = await client.list({ marker }); console.log(result); } list(); -
Appeler la méthode listV2 pour répertorier les objets
Le paramètre
startAfterdéfinit l'objet à partir duquel commence le listage.const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); async function list () { const result = await client.listV2({ // List the objects and subfolders whose names are alphabetically after a/b in the a/ folder. delimiter: '/', prefix: 'a/', 'start-after': 'a/b' }); console.log(result.objects, result.prefixes); } list();
Paginer le listage de tous les objets d'un compartiment
L'exemple de code suivant montre comment lister tous les objets d'un compartiment en utilisant la pagination. Le paramètre max-keys permet de définir le nombre maximal d'objets par page.
-
Appeler la méthode list pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); let marker = null; // List up to 20 objects on each page. const maxKeys = 20; async function list () { do { const result = await client.list({ marker: marker, 'max-keys': maxKeys }); marker = result.nextMarker; console.log(result); } while (marker); } list(); -
Appeler la méthode listV2 pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); async function list () { let continuationToken = null; // List up to 20 objects on each page. const maxKeys = 20; do { const result = await client.listV2({ 'continuation-token': continuationToken, 'max-keys': maxKeys }); continuationToken = result.nextContinuationToken; console.log(result); }while(continuationToken) } list();
Répertorier les objets et les informations sur le propriétaire
L'exemple de code suivant montre comment inclure les informations sur le propriétaire dans la liste des objets :
const OSS = require('ali-oss');
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the bucket name.
bucket: 'yourbucketname'
});
// By default, the information about the object owners is not listed. To include the object owner information in the response, you must set the fetch-owner parameter to true.
async function list () {
const result = await client.listV2({
'fetch-owner': true
});
console.log(result.objects);
}
list();
Répertorier les objets et sous-dossiers d'un dossier spécifié
OSS utilise une structure plate pour stocker les objets. Un répertoire est un objet de zéro octet dont le nom se termine par une barre oblique (/). Vous pouvez télécharger et téléverser cet objet. Par défaut, un objet dont le nom se termine par une barre oblique (/) s'affiche comme un répertoire dans la console OSS. Pour obtenir le code complet permettant de créer des répertoires, consultez GitHub .
Si vous définissez
prefixsur un nom de répertoire dans la requête, les objets et sous-répertoires dont les noms contiennent ce préfixe sont listés.Si vous spécifiez un préfixe et définissez
delimitersur une barre oblique (/), seuls les objets et sous-répertoires situés directement dans ce répertoire sont listés. Chaque sous-répertoire apparaît comme un élément unique dansCommonPrefixes. Les objets contenus dans ces sous-répertoires ne sont pas listés.
Supposons qu'un compartiment contienne les objets suivants :
foo/x
foo/y
foo/bar/a
foo/bar/b
foo/hello/C/1
foo/hello/C/2
...
foo/hello/C/9999
L'exemple de code suivant montre comment appeler la méthode list ou listV2 pour lister les objets et sous-dossiers d'un dossier donné.
-
Appeler la méthode list pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); // Call the listDir function and configure different prefixes to list the required objects. async function listDir(dir) { try { const result = await client.list({ prefix: dir, delimiter: '/' }); if (result && result.prefixes) { result.prefixes.forEach(subDir => { console.log('SubDir: %s', subDir); }); } if (result && result.objects) { result.objects.forEach(obj => { console.log('Object: %s', obj.name); }); } } catch (e) { console.log(e); } } listDir('foo/'); // Expected result: // SubDir: foo/bar/ // SubDir: foo/hello/ // Object: foo/x // Object: foo/y listDir('foo/bar/'); // Expected result: // Object: foo/bar/a // Object: foo/bar/b listDir('foo/hello/C/'); // Expected result: // Object: foo/hello/C/1 // Object: foo/hello/C/2 // ... // Object: foo/hello/C/9999 -
Appeler la méthode listV2 pour répertorier les objets
const OSS = require('ali-oss'); const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before running this code, ensure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the bucket name. bucket: 'yourbucketname' }); // Call the listV2Dir function and configure different prefixes to list the required objects. async function listV2Dir(dir) { try { const result = await client.listV2({ prefix: dir, delimiter: '/' }); if (result && result.prefixes) { result.prefixes.forEach(subDir => { console.log('SubDir: %s', subDir); }); } if (result && result.objects) { result.objects.forEach(obj => { console.log('Object: %s', obj.name); }); } } catch (e) { console.log(e); } } listDir('foo/'); // Expected result: // SubDir: foo/bar/ // SubDir: foo/hello/ // Object: foo/x // Object: foo/y listDir('foo/bar/'); // Expected result: // Object: foo/bar/a // Object: foo/bar/b listDir('foo/hello/C/'); // Expected result: // Object: foo/hello/C/1 // Object: foo/hello/C/2 // ... // Object: foo/hello/C/9999
Références
Pour obtenir le code complet permettant de lister les objets, consultez GitHub .
Pour plus d'informations sur les opérations API permettant de lister les objets, consultez ListObjects (GetBucket) et ListObjectsV2 (GetBucketV2) .