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 |
|---|---|---|---|
|
|
chaîne |
Oui |
Chemin du répertoire local à télécharger. |
|
|
chaîne |
Oui |
Nom du compartiment S3 de destination. |
|
|
array |
Non |
Paramètres de demande d'objet de téléchargement supplémentaires pour tous les fichiers. |
|
|
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. |
|
|
array |
Non |
Tableau d'objets |
|
|
bool |
-1 « Exécution par défaut » |
Pour indiquer la profondeur maximale du fichier récursif, trois marches. |
|
|
|
Non |
Un outil de suivi de la progression de tous les téléchargements. |
| Option | Type | Par défaut | Description |
|---|---|---|---|
|
|
bool |
|
S'il faut télécharger des sous-répertoires de manière récursive. |
|
|
bool |
|
S'il faut suivre des liens symboliques. |
|
|
chaîne |
'' |
Préfixe à ajouter à toutes les clés d'objet. |
|
|
chaîne |
'/' |
Le délimiteur à utiliser dans les clés d'objet S3. |
track_progress |
bool | false |
S'il faut suivre les progrès. |
|
|
int | 100 | Le nombre maximum de téléchargements simultanés. |
|
|
appelable |
null |
Fonction permettant de filtrer les fichiers à télécharger. |
|
|
appelable |
null |
Fonction permettant de personnaliser chaque demande de téléchargement. |
|
|
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 de |
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 |
|---|---|---|---|
|
|
chaîne |
Oui |
Nom du compartiment S3 source à partir duquel les objets sont téléchargés. |
|
|
chaîne |
Oui |
Répertoire local dans lequel télécharger les fichiers. |
|
|
array |
Non |
Paramètres de demande d'objet de téléchargement supplémentaires pour tous les fichiers. |
|
|
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. |
|
|
array |
Non |
Tableau d'objets |
|
|
|
Non |
Un outil de suivi de la progression de tous les téléchargements. |
| Option | Type | Par défaut | Description |
|---|---|---|---|
|
|
chaîne |
'' |
Préfixe pour le filtrage (si ce n'est pas le cas |
|
|
bool |
|
S'il faut suivre les progrès. |
|
|
appelable |
|
Fonction permettant de filtrer les objets S3 à télécharger. |
|
|
appelable |
|
Fonction permettant de personnaliser chaque demande de téléchargement. |
|
|
array |
[] |
Arguments de l' |
|
|
bool |
false |
S'il faut échouer lorsqu'un chemin de fichier de destination d'un objet existe déjà. |
|
|
appelable |
null |
Fonction permettant de gérer les échecs de téléchargement. |
|
|
int |
100 |
Le nombre maximal de téléchargements simultanés. |
|
|
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 :
-
Calcule le chemin de chaque fichier par rapport au répertoire source
-
Ajoute la
s3_prefixvaleur si elle est spécifiée (ajoute automatiquement une barre oblique finale) -
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 :
-
Supprime la clé
s3_prefixde l'objet si elle est spécifiée -
Remplace le séparateur S3 (
/) par le séparateur de répertoire du système d'exploitation -
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