Operazioni di directory - AWS SDK per PHP

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Operazioni di directory

S3 Transfer Manager può gestire i trasferimenti di intere directory.

Carica la cartella

S3 Transfer Manager può caricare un'intera directory in un bucket 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";

Parametri del metodo uploadDirectory

Il uploadDirectory metodo accetta un'istanza di UploadDirectoryRequest <add link> come argomento.

Parametri di UploadDirectoryRequest

Parametro Tipo Campo obbligatorio Descrizione

$sourceDirectory

stringa

Percorso della directory locale da caricare.

$targetBucket

stringa

Nome del bucket S3 di destinazione.

$uploadRequestArgs

array

No

Parametri aggiuntivi di richiesta dell'oggetto di caricamento per tutti i file.

$config

array

No

Opzioni di configurazione per il caricamento della directory. Per ulteriori informazioni sulle opzioni di configurazione, consulta la sezione seguente.

$listeners

array

No

Array di oggetti TransferListener. L'SDK clona ciascuno TransferListener per file.

$max_depth

bool

-1 «Runtime predefinito»

Per indicare la profondità massima del file ricorsivo, camminate tre volte.

$progressTracker

TransferListener

No

Un tracker dei progressi per tutti i caricamenti.

Opzione Tipo Predefinita Description

recursive

bool

false

Se caricare in modo ricorsivo le sottodirectory.

follow_symbolic_links

bool

false

Se seguire i link simbolici.

s3_prefix

stringa

''

Prefisso da aggiungere a tutte le chiavi degli oggetti.

s3_delimiter

stringa

'/'

Il delimitatore da usare nelle chiavi degli oggetti S3.

track_progress bool false Se tenere traccia dei progressi.

max_concurrency

int 100 Il numero massimo di caricamenti simultanei.

filter

richiamabile

null

Funzione per filtrare i file da caricare.

upload_object_request_modifier

richiamabile

null

Funzione per personalizzare ogni richiesta di caricamento.

failure_policy

richiamabile

null

Funzione per gestire gli errori di caricamento.

Tipi di opzioni richiamabili $config
Nome opzione nome del parametro tipo di parametro informazioni sui parametri
filter $file SplFileInfo|stringa

Se trasmessa su stringa, è il percorso del file. Altrimenti, è un'istanza diSplFileInfo.

upload_object_request_modifier $requestArgs array Gli argomenti della richiesta per ogni singola richiesta di caricamento. Per ulteriori informazioni sulle opzioni di matrice, vedere la sezione sulla sintassi dei parametri del metodo PutObject.
failure_policy $uploadRequestArgs array Gli argomenti della richiesta per ogni singola richiesta di caricamento. Per ulteriori informazioni sulle opzioni di matrice, vedere la sezione sulla sintassi dei parametri del metodo PutObject per le opzioni dell'array.
$uploadDirectoryArgs array Un array con la directory di origine e il bucket di destinazione per l'operazione di caricamento della directory.
$reason Throwable|stringa

Il contenitore di eccezioni che contiene informazioni sulla causa dell'errore.

$uploadDirectoryResult UploadDirectoryResult L'oggetto che contiene il numero di oggetti caricati correttamente e il numero di oggetti non riusciti.

Quando il uploadDirectory metodo viene eseguito correttamente, restituisce un UploadDirectoryResult<add link>.

Scarica la directory

Puoi scaricare una directory da un bucket 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";

Parametri del metodo downloadDirectory

Il downloadDirectory metodo accetta un'istanza di DownloadDirectoryRequest <add link> come argomento.

Parametri di DownloadDirectoryRequest

Parametro Tipo Campo obbligatorio Descrizione

$sourceBucket

stringa

Nome del bucket S3 di origine da cui vengono scaricati gli oggetti.

$destinationDirectory

stringa

Directory locale in cui scaricare i file.

$downloadRequestArgs

array

No

Parametri aggiuntivi di richiesta dell'oggetto di download per tutti i file.

$config

array

No

Opzioni di configurazione per lo scaricamento della directory. Per ulteriori informazioni sulle opzioni di configurazione, vedere la sezione seguente.

$listeners

array

No

Array di oggetti TransferListener. L'SDK clona ciascuno TransferListener per file.

$progressTracker

TransferListener

No

Un tracker dei progressi per tutti i download.

Opzione Tipo Predefinita Description

s3_prefix

stringa

''

Prefisso per il filtraggio (se non è presentelist_objects_v2_args).

track_progress

bool

false

Se tenere traccia dei progressi.

filter

richiamabile

null

Funzione per filtrare gli oggetti S3 da scaricare.

download_object_request_modifier

richiamabile

null

Funzione per personalizzare ogni richiesta di download.

list_objects_v2_args

array

[]

Argomenti per l'ListObjectsV2operazione. Questa operazione recupera i metadati per gli oggetti da scaricare.

fails_when_destination_exists

bool

false

Se fallire quando esiste già un percorso del file di destinazione dell'oggetto.

failure_policy

richiamabile

null

Funzione per gestire gli errori di download.

max_concurrency

int

100

Il numero massimo di download simultanei.

target_part_size_bytes

int

varia

Dimensione della parte per i download in più parti quando sono compresi i tipi di download multiparte.

Tipi di opzioni richiamabili $config
Nome opzione nome del parametro tipo di parametro informazioni sui parametri
filter $objectKey stringa

Il nome della chiave dell'oggetto dal bucket.

download_object_request_modifier $requestArgs array Gli argomenti della richiesta per ogni singola richiesta di download. Per ulteriori informazioni sulle opzioni di matrice, vedere la sezione sulla sintassi dei parametri del metodo getObject.
failure_policy $downloadObjectRequestArgs array

Gli argomenti della richiesta per ogni singola richiesta di download. Per ulteriori informazioni sulle opzioni di matrice, vedere la sezione sulla sintassi dei parametri del metodo getObject.

$downloadDirectoryRequest array

Un array con il bucket di origine e la directory di destinazione per l'operazione della directory di download.

$reason Throwable

Il contenitore delle eccezioni che contiene informazioni sulla causa dell'errore.

$downloadDirectoryResult DownloadDirectoryResult <add link>

L'oggetto che contiene il numero di oggetti scaricati correttamente e il numero di oggetti non riusciti.

Come funzionano le operazioni relative alle directory

Questa sezione spiega come S3 Transfer Manager gestisce i percorsi dei file e le chiavi degli oggetti durante le operazioni sulle directory.

Gestione dei percorsi di caricamento

Quando carichi una directory, l'SDK costruisce le chiavi degli oggetti S3 dai percorsi dei file:

  1. Calcola il percorso di ogni file rispetto alla directory di origine

  2. Antepone il s3_prefix valore se specificato (aggiunge automaticamente la barra finale)

  3. Sostituisce il separatore di directory del sistema operativo con (impostazione predefinita) s3_delimiter /

L'recursiveopzione controlla se le sottodirectory sono incluse. Se false (impostazione predefinita), vengono caricati solo i file di primo livello. Quando true vengono caricati tutti i file nelle sottodirectory, preservando la struttura delle cartelle nelle chiavi degli oggetti.

Nota

La chiave in S3 per ogni file caricato sarà il prefisso s3 fornito, di default è null, più il percorso relativo del file a partire dalla directory di origine specificata. Inoltre, sostituiamo il separatore di directory nel nome della chiave risolta con il delimitatore s3 fornito, che per impostazione predefinita sarà /.

Esempio 1

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

Struttura della directory

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

Le chiavi per ogni file saranno:

$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

Esempio 2

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

Struttura della directory

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

Le chiavi per ogni file saranno:

$s3Prefix + $fileRelativePath;
- my-file1.txt - my-file-2.txt - sub-dir/my-another-file1.txt - sub-dir/my-another-file2.txt
Esempio Gestione del percorso della directory di caricamento
<?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

Gestione dei percorsi di download

Quando scarichi una directory, l'SDK costruisce i percorsi dei file locali a partire dalle chiavi degli oggetti S3:

  1. Rimuove la chiave s3_prefix from the object, se specificata

  2. Sostituisce il delimitatore S3 (/) con il separatore di directory del sistema operativo

  3. Aggiunge il risultato alla directory di destinazione

I download sono sempre ricorsivi. L'SDK recupera tutti gli oggetti con il prefisso specificato e crea sottodirectory in base alle esigenze. Verifica che i percorsi non si risolvano al di fuori della directory di destinazione per motivi di sicurezza.

Esempio Gestione del percorso della directory di download
<?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
Nota

Il percorso del file per gli oggetti scaricati verrà risolto come segue:

  • Il prefisso s3, se fornito, verrà rimosso dalla chiave dell'oggetto.

  • Se il delimitatore s3Delimiter è diverso dal separatore di directory del sistema operativo, il delimitatore s3 verrà sostituito dal separatore di directory del sistema operativo.

Esempio 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/";

Una volta scaricati, gli oggetti verranno posizionati come segue:

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

Come possiamo vedere, il prefisso è stato rimosso dal percorso finale del file per gli oggetti.

Esempio 2: senza prefisso 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/";

Una volta scaricati, gli oggetti verranno posizionati come segue:

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