Opérations du répertoire - AWS SDK pour PHP

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Opérations du répertoire

S3 Transfer Manager peut gérer des transferts d'annuaires complets.

Répertoire de téléchargement

S3 Transfer Manager peut télécharger un répertoire entier dans un compartiment S3. <Are the key values the filenames when uploaded?>

<?php use Aws\S3\S3Transfer\Models\UploadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $uploadDirPromise = $transferManager->uploadDirectory( new UploadDirectoryRequest( '/path/to/local/directory', 'amzn-s3-demo-bucket', [ // Additional `putObject` parameters that apply to all files. 'ACL' => 'public-read', 'CacheControl' => 'max-age=3600', ], [ // Configuration options. 'recursive' => true, 'follow_symbolic_links' => false, 's3_prefix' => 'uploads/2023/', 's3_delimiter' => '/', 'track_progress' => true, 'filter' => function ($file) { // Upload only .jpg files. return pathinfo($file, PATHINFO_EXTENSION) === 'jpg'; }, 'upload_object_request_modifier' => function ($args) { // Customize request arguments for each file. $args['ContentType'] = 'image/jpeg'; }, ] ) ); // Wait for the upload process to complete. $result = $uploadDirPromise->wait(); $uploaded = $result->getObjectsUploaded(); $failed = $result->getObjectsFailed(); echo "Uploaded {$uploaded} files. Failed: {$failed}\n";

Paramètres de la méthode uploadDirectory

La uploadDirectory méthode accepte une instance de UploadDirectoryRequest <add link> comme argument.

Paramètres dans l’UploadDirectoryRequest

Paramètre Type Obligatoire Description

$sourceDirectory

chaîne

Oui

Chemin du répertoire local à télécharger.

$targetBucket

chaîne

Oui

Nom du compartiment S3 de destination.

$uploadRequestArgs

array

Non

Paramètres de demande d'objet de téléchargement supplémentaires pour tous les fichiers.

$config

array

Non

Options de configuration pour le téléchargement du répertoire. Pour plus d'informations sur les options de configuration, consultez la section suivante.

$listeners

array

Non

Tableau d'objets TransferListener. Le SDK clone chacun d'eux TransferListener par fichier.

$max_depth

bool

-1 « Exécution par défaut »

Pour indiquer la profondeur maximale du fichier récursif, trois marches.

$progressTracker

TransferListener

Non

Un outil de suivi de la progression de tous les téléchargements.

Option Type Par défaut Description

recursive

bool

false

S'il faut télécharger des sous-répertoires de manière récursive.

follow_symbolic_links

bool

false

S'il faut suivre des liens symboliques.

s3_prefix

chaîne

''

Préfixe à ajouter à toutes les clés d'objet.

s3_delimiter

chaîne

'/'

Le délimiteur à utiliser dans les clés d'objet S3.

track_progress bool false S'il faut suivre les progrès.

max_concurrency

int 100 Le nombre maximum de téléchargements simultanés.

filter

appelable

null

Fonction permettant de filtrer les fichiers à télécharger.

upload_object_request_modifier

appelable

null

Fonction permettant de personnaliser chaque demande de téléchargement.

failure_policy

appelable

null

Fonction permettant de gérer les échecs de téléchargement.

Types d'options appelables $config
Nom d’option nom du paramètre type de paramètre informations sur les paramètres
filter $file SplFileInfo|chaîne

S'il est converti en chaîne, il s'agit du chemin du fichier. Dans le cas contraire, il s'agit d'une instance deSplFileInfo.

upload_object_request_modifier $requestArgs array Les arguments de demande pour chaque demande de téléchargement individuelle. Pour plus d'informations sur les options de tableau, consultez la section sur la syntaxe des paramètres de la méthode PutObject.
failure_policy $uploadRequestArgs array Les arguments de demande pour chaque demande de téléchargement individuelle. Pour plus d'informations sur les options de tableau, consultez la section sur la syntaxe des paramètres de la méthode putObject pour les options de tableau.
$uploadDirectoryArgs array Un tableau contenant le répertoire source et le compartiment cible pour l'opération de répertoire de téléchargement.
$reason Throwable|chaîne

Le support d'exception qui contient des informations sur la cause de l'échec.

$uploadDirectoryResult UploadDirectoryResult Objet contenant le nombre d'objets chargés avec succès et le nombre d'objets ayant échoué.

Lorsque la uploadDirectory méthode s'exécute correctement, elle renvoie un UploadDirectoryResult<add link>.

Répertoire de téléchargement

Vous pouvez télécharger un répertoire depuis un compartiment S3. <Are the filenames the key values when downloaded? If there is no extension in the key, is there also no extension on the file?>

<?php use Aws\S3\S3Transfer\Models\DownloadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $downloadDirPromise = $transferManager->downloadDirectory( new DownloadDirectoryRequest( 'amzn-s3-demo-bucket', '/path/to/local/directory', [ // Additional `getObject` parameters that apply to all files. ], [ // Configuration options. 's3_prefix' => 'uploads/2023/', 's3_delimiter' => '/', 'track_progress' => true, 'filter' => function ($key) { // Download only .jpg files. return pathinfo($key, PATHINFO_EXTENSION) === 'jpg'; }, 'download_object_request_modifier' => function ($args) { // Customize request arguments for each file. $args['ResponseContentType'] = 'image/jpeg'; }, 'list_objects_v2_args' => [ 'MaxKeys' => 1000, 'Prefix' => 'uploads/2023/', ], 'fails_when_destination_exists' => true, ] ) ); // Wait for the download process to complete. $result = $downloadDirPromise->wait(); $downloaded = $result->getObjectsDownloaded(); $failed = $result->getObjectsFailed(); echo "Downloaded {$downloaded} files. Failed: {$failed}\n";

Paramètres de la méthode downloadDirectory

La downloadDirectory méthode accepte une instance de DownloadDirectoryRequest <add link> comme argument.

Paramètres dans l’DownloadDirectoryRequest

Paramètre Type Obligatoire Description

$sourceBucket

chaîne

Oui

Nom du compartiment S3 source à partir duquel les objets sont téléchargés.

$destinationDirectory

chaîne

Oui

Répertoire local dans lequel télécharger les fichiers.

$downloadRequestArgs

array

Non

Paramètres de demande d'objet de téléchargement supplémentaires pour tous les fichiers.

$config

array

Non

Options de configuration pour le téléchargement du répertoire. Pour plus d'informations sur les options de configuration, consultez la section suivante.

$listeners

array

Non

Tableau d'objets TransferListener. Le SDK clone chacun d'eux TransferListener par fichier.

$progressTracker

TransferListener

Non

Un outil de suivi de la progression de tous les téléchargements.

Option Type Par défaut Description

s3_prefix

chaîne

''

Préfixe pour le filtrage (si ce n'est pas le caslist_objects_v2_args).

track_progress

bool

false

S'il faut suivre les progrès.

filter

appelable

null

Fonction permettant de filtrer les objets S3 à télécharger.

download_object_request_modifier

appelable

null

Fonction permettant de personnaliser chaque demande de téléchargement.

list_objects_v2_args

array

[]

Arguments de l'ListObjectsV2opération. Cette opération récupère les métadonnées des objets à télécharger.

fails_when_destination_exists

bool

false

S'il faut échouer lorsqu'un chemin de fichier de destination d'un objet existe déjà.

failure_policy

appelable

null

Fonction permettant de gérer les échecs de téléchargement.

max_concurrency

int

100

Le nombre maximal de téléchargements simultanés.

target_part_size_bytes

int

varie

Taille de pièce pour les téléchargements en plusieurs parties lorsque le type de téléchargement en plusieurs parties est varié.

Types d'options appelables $config
Nom d’option nom du paramètre type de paramètre informations sur les paramètres
filter $objectKey chaîne

Le nom de la clé de l'objet indiqué dans le compartiment.

download_object_request_modifier $requestArgs array Les arguments de demande pour chaque demande de téléchargement individuelle. Pour plus d'informations sur les options de tableau, consultez la section sur la syntaxe des paramètres de la méthode GetObject.
failure_policy $downloadObjectRequestArgs array

Les arguments de demande pour chaque demande de téléchargement individuelle. Pour plus d'informations sur les options de tableau, consultez la section sur la syntaxe des paramètres de la méthode GetObject.

$downloadDirectoryRequest array

Un tableau contenant le compartiment source et le répertoire cible pour l'opération du répertoire de téléchargement.

$reason Throwable

Le support d'exception qui contient des informations sur la cause de l'échec.

$downloadDirectoryResult DownloadDirectoryResult <add link>

Objet contenant le nombre d'objets téléchargés avec succès et le nombre d'objets ayant échoué.

Comment fonctionnent les opérations d'annuaire

Cette section explique comment le gestionnaire de transfert S3 gère les chemins de fichiers et les clés d'objet lors des opérations de répertoire.

Gestion du chemin de téléchargement

Lorsque vous chargez un répertoire, le SDK crée des clés d'objet S3 à partir de chemins de fichiers :

  1. Calcule le chemin de chaque fichier par rapport au répertoire source

  2. Ajoute la s3_prefix valeur si elle est spécifiée (ajoute automatiquement une barre oblique finale)

  3. Remplace le séparateur de répertoire du système d'exploitation par le s3_delimiter (par défaut/)

L'recursiveoption contrôle si les sous-répertoires sont inclus. Lorsque false (par défaut), seuls les fichiers de premier niveau sont chargés. Lorsque tous true les fichiers des sous-répertoires sont téléchargés, la structure des répertoires est préservée dans les clés d'objet.

Note

La clé dans S3 pour chaque fichier téléchargé sera le préfixe s3 fourni, nul par défaut, plus le chemin relatif du fichier à partir du répertoire source spécifié. De plus, nous remplaçons le séparateur de répertoire dans le nom de clé résolu par le délimiteur s3 fourni, qui sera par défaut /.

Exemple 1

$sourceDirectory = "/opt/my-upload-directory"; $s3Prefix = "important/"; $s3Delimiter = "/"; // Default value

Structure des annuaires

/opt/my-upload-directory/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt

Les clés de chaque fichier seront les suivantes :

$s3Prefix + $fileRelativePath;
- important/my-file1.txt - important/my-file-2.txt - important/sub-dir/my-another-file1.txt - important/sub-dir/my-another-file2.txt

Exemple 2

$sourceDirectory = "/opt/my-docs"; $s3Prefix = ''; // No provided and it will defaulted to empty string $s3Delimiter = "/"; // Default value

Structure des annuaires

/opt/my-docs/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt

Les clés de chaque fichier seront les suivantes :

$s3Prefix + $fileRelativePath;
- my-file1.txt - my-file-2.txt - sub-dir/my-another-file1.txt - sub-dir/my-another-file2.txt
Exemple Gestion du chemin du répertoire de téléchargement
<?php // Source directory: /home/user/photos/ // fla/beach.jpg // fla/sunset.jpg // fla/pool/party.jpg // With s3_prefix: '2023' and recursive: true // Results: // 2023/fla/beach.jpg // 2023/fla/sunset.jpg // 2023/fla/pool/party.jpg

Gestion du chemin de téléchargement

Lorsque vous téléchargez un répertoire, le SDK crée des chemins de fichiers locaux à partir des clés d'objet S3 :

  1. Supprime la clé s3_prefix de l'objet si elle est spécifiée

  2. Remplace le séparateur S3 (/) par le séparateur de répertoire du système d'exploitation

  3. Ajoute le résultat au répertoire de destination

Les téléchargements sont toujours récursifs. Le SDK récupère tous les objets sous le préfixe spécifié et crée des sous-répertoires selon les besoins. Cela confirme que les chemins ne sont pas résolus en dehors du répertoire de destination pour des raisons de sécurité.

Exemple Gestion des chemins de répertoire de téléchargement
<?php // S3 objects: // 2023/fla/beach.jpg // 2023/fla/sunset.jpg // 2023/fla/pool/party.jpg // With s3_prefix: '2023' and destination: /home/user/downloads // Results: // /home/user/downloads/fla/beach.jpg // /home/user/downloads/fla/sunset.jpg // /home/user/downloads/fla/pool/party.jpg
Note

Le chemin du fichier pour les objets téléchargés sera résolu comme suit :

  • Le préfixe s3, s'il est fourni, sera supprimé de la clé d'objet.

  • Si le s3Delimiter est différent du séparateur de répertoire du système d'exploitation, le délimiteur s3 sera remplacé par le séparateur de répertoire du système d'exploitation.

Exemple 1

$s3Prefix = "my-prefix"; $s3Objects = [ "my-prefix/file-1.txt", "my-prefix/file-2.txt", "my-prefix/subdir/file-1.txt" ]; $targetDirectory = "/opt/bucket/downloads/";

Une fois ces objets téléchargés, ils seront placés comme suit :

/opt/bucket/downloads/ -- file-1.txt -- file-2.txt -- subdir/ ---- file-1.txt

Comme nous pouvons le constater, le préfixe a été supprimé du chemin de fichier final pour les objets.

Exemple 2 - sans préfixe s3

$s3Prefix = ""; // No provided $s3Objects = [ "README.md", "my-docs/file-1.txt", "my-docs/file-2.txt", "my-docs/statements/file-1.txt" ]; $targetDirectory = "/opt/bucket/downloads/";

Une fois ces objets téléchargés, ils seront placés comme suit :

/opt/bucket/downloads/ -- README.md -- my-docs/ ---- file-1.txt ---- file-2.txt ---- statements/ ------ file-1.txt