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 |
|---|---|---|---|
|
|
stringa |
Sì |
Percorso della directory locale da caricare. |
|
|
stringa |
Sì |
Nome del bucket S3 di destinazione. |
|
|
array |
No |
Parametri aggiuntivi di richiesta dell'oggetto di caricamento per tutti i file. |
|
|
array |
No |
Opzioni di configurazione per il caricamento della directory. Per ulteriori informazioni sulle opzioni di configurazione, consulta la sezione seguente. |
|
|
array |
No |
Array di oggetti |
|
|
bool |
-1 «Runtime predefinito» |
Per indicare la profondità massima del file ricorsivo, camminate tre volte. |
|
|
|
No |
Un tracker dei progressi per tutti i caricamenti. |
| Opzione | Tipo | Predefinita | Description |
|---|---|---|---|
|
|
bool |
|
Se caricare in modo ricorsivo le sottodirectory. |
|
|
bool |
|
Se seguire i link simbolici. |
|
|
stringa |
'' |
Prefisso da aggiungere a tutte le chiavi degli oggetti. |
|
|
stringa |
'/' |
Il delimitatore da usare nelle chiavi degli oggetti S3. |
track_progress |
bool | false |
Se tenere traccia dei progressi. |
|
|
int | 100 | Il numero massimo di caricamenti simultanei. |
|
|
richiamabile |
null |
Funzione per filtrare i file da caricare. |
|
|
richiamabile |
null |
Funzione per personalizzare ogni richiesta di caricamento. |
|
|
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 di |
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 |
|---|---|---|---|
|
|
stringa |
Sì |
Nome del bucket S3 di origine da cui vengono scaricati gli oggetti. |
|
|
stringa |
Sì |
Directory locale in cui scaricare i file. |
|
|
array |
No |
Parametri aggiuntivi di richiesta dell'oggetto di download per tutti i file. |
|
|
array |
No |
Opzioni di configurazione per lo scaricamento della directory. Per ulteriori informazioni sulle opzioni di configurazione, vedere la sezione seguente. |
|
|
array |
No |
Array di oggetti |
|
|
|
No |
Un tracker dei progressi per tutti i download. |
| Opzione | Tipo | Predefinita | Description |
|---|---|---|---|
|
|
stringa |
'' |
Prefisso per il filtraggio (se non è presente |
|
|
bool |
|
Se tenere traccia dei progressi. |
|
|
richiamabile |
|
Funzione per filtrare gli oggetti S3 da scaricare. |
|
|
richiamabile |
|
Funzione per personalizzare ogni richiesta di download. |
|
|
array |
[] |
Argomenti per l' |
|
|
bool |
false |
Se fallire quando esiste già un percorso del file di destinazione dell'oggetto. |
|
|
richiamabile |
null |
Funzione per gestire gli errori di download. |
|
|
int |
100 |
Il numero massimo di download simultanei. |
|
|
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:
-
Calcola il percorso di ogni file rispetto alla directory di origine
-
Antepone il
s3_prefixvalore se specificato (aggiunge automaticamente la barra finale) -
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:
-
Rimuove la chiave
s3_prefixfrom the object, se specificata -
Sostituisce il delimitatore S3 (
/) con il separatore di directory del sistema operativo -
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