Verzeichnisoperationen - AWS SDK für PHP

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verzeichnisoperationen

S3 Transfer Manager kann ganze Verzeichnisübertragungen abwickeln.

Verzeichnis hochladen

S3 Transfer Manager kann ein ganzes Verzeichnis in einen S3-Bucket hochladen. <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";

Parameter für die uploadDirectory-Methode

Die uploadDirectory Methode akzeptiert eine Instanz von UploadDirectoryRequest <add link> als Argument.

UploadDirectoryRequest-Parameter

Parameter Typ Erforderlich Beschreibung

$sourceDirectory

Zeichenfolge

Ja

Pfad des lokalen Verzeichnisses, das hochgeladen werden soll.

$targetBucket

Zeichenfolge

Ja

Name des Ziel-S3-Buckets.

$uploadRequestArgs

Array

Nein

Zusätzliche Upload-Objektanforderungsparameter für alle Dateien.

$config

Array

Nein

Konfigurationsoptionen für den Verzeichnis-Upload. Weitere Informationen zu den Konfigurationsoptionen finden Sie im folgenden Abschnitt.

$listeners

Array

Nein

Array von TransferListener-Objekten. Das SDK klont jedes Exemplar TransferListener pro Datei.

$max_depth

bool

-1 „Standardlaufzeit“

Um die maximale Tiefe der rekursiven Datei anzugeben, laufen drei Schritte.

$progressTracker

TransferListener

Nein

Ein Fortschritts-Tracker für alle Uploads.

Option Typ Standard Description

recursive

bool

false

Ob Unterverzeichnisse rekursiv hochgeladen werden sollen.

follow_symbolic_links

bool

false

Ob symbolischen Links gefolgt werden soll.

s3_prefix

Zeichenfolge

''

Präfix, das allen Objektschlüsseln hinzugefügt werden soll.

s3_delimiter

Zeichenfolge

'/'

Das in S3-Objektschlüsseln zu verwendende Trennzeichen.

track_progress bool false Ob der Fortschritt verfolgt werden soll.

max_concurrency

int 100 Die maximale Anzahl gleichzeitiger Uploads.

filter

aufrufbar

Null

Funktion zum Filtern der hochzuladenden Dateien.

upload_object_request_modifier

aufrufbar

Null

Funktion zum Anpassen jeder Upload-Anfrage.

failure_policy

aufrufbar

Null

Funktion zur Behandlung von Upload-Fehlern.

Aufrufbare Arten von Optionen $config
Optionsname Name des Parameters Parametertyp Parameter-Informationen
filter $file SplFileInfo|Zeichenfolge

Wenn es in eine Zeichenfolge umgewandelt wird, ist dies der Dateipfad. Andernfalls ist es eine Instanz vonSplFileInfo.

upload_object_request_modifier $requestArgs Array Die Anforderungsargumente für jede einzelne Upload-Anfrage. Weitere Informationen zu Array-Optionen finden Sie im Abschnitt zur Parametersyntax der PutObject-Methode.
failure_policy $uploadRequestArgs Array Die Anforderungsargumente für jede einzelne Upload-Anfrage. Weitere Informationen zu Array-Optionen finden Sie im Abschnitt zur Parametersyntax der PutObject-Methode für Array-Optionen.
$uploadDirectoryArgs Array Ein Array mit dem Quellverzeichnis und dem Ziel-Bucket für den Vorgang zum Hochladen des Verzeichnisses.
$reason Throwable|Zeichenfolge

Der Ausnahmehalter, der Informationen darüber enthält, was den Fehler verursacht hat.

$uploadDirectoryResult UploadDirectoryResult Das Objekt, das die Anzahl der erfolgreich hochgeladenen Objekte und die Anzahl der fehlgeschlagenen Objekte enthält.

Wenn die uploadDirectory Methode erfolgreich ausgeführt wird, gibt sie eine zurück UploadDirectoryResult<add link>.

Verzeichnis herunterladen

Sie können ein Verzeichnis aus einem S3-Bucket herunterladen. <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";

Parameter für die downloadDirectory-Methode

Die downloadDirectory Methode akzeptiert eine Instanz von DownloadDirectoryRequest <add link> als Argument.

DownloadDirectoryRequest-Parameter

Parameter Typ Erforderlich Beschreibung

$sourceBucket

Zeichenfolge

Ja

Name des Quell-S3-Buckets, aus dem Objekte heruntergeladen werden.

$destinationDirectory

Zeichenfolge

Ja

Lokales Verzeichnis, in das Dateien heruntergeladen werden.

$downloadRequestArgs

Array

Nein

Zusätzliche Parameter für die Anforderung von Download-Objekten für alle Dateien.

$config

Array

Nein

Konfigurationsoptionen für den Verzeichnis-Download. Weitere Informationen zu den Konfigurationsoptionen finden Sie im folgenden Abschnitt.

$listeners

Array

Nein

Array von TransferListener-Objekten. Das SDK klont jedes Exemplar TransferListener pro Datei.

$progressTracker

TransferListener

Nein

Ein Fortschritts-Tracker für alle Downloads.

Option Typ Standard Description

s3_prefix

Zeichenfolge

''

Präfix für die Filterung (falls nicht list_objects_v2_args vorhanden).

track_progress

bool

false

Ob der Fortschritt verfolgt werden soll.

filter

aufrufbar

null

Funktion zum Filtern, welche S3-Objekte heruntergeladen werden sollen.

download_object_request_modifier

aufrufbar

null

Funktion zum Anpassen jeder Download-Anfrage.

list_objects_v2_args

Array

[]

Argumente für die ListObjectsV2Operation. Bei diesem Vorgang werden die Metadaten für die herunterzuladenden Objekte abgerufen.

fails_when_destination_exists

bool

false

Gibt an, ob ein Fehler auftreten soll, wenn ein Zieldateipfad für das Objekt bereits vorhanden ist.

failure_policy

aufrufbar

Null

Funktion zur Behandlung von Download-Fehlern.

max_concurrency

int

100

Die maximale Anzahl gleichzeitiger Downloads.

target_part_size_bytes

int

variiert

Teilgröße für mehrteilige Downloads, wenn der Typ des mehrteiligen Downloads in einem Bereich liegt.

Aufrufbare Typen von Optionen $config
Optionsname Name des Parameters Parametertyp Parameter-Informationen
filter $objectKey Zeichenfolge

Der Name des Objektschlüssels aus dem Bucket.

download_object_request_modifier $requestArgs Array Die Anforderungsargumente für jede einzelne Download-Anfrage. Weitere Informationen zu Array-Optionen finden Sie im Abschnitt zur Parametersyntax der GetObject-Methode.
failure_policy $downloadObjectRequestArgs Array

Die Anforderungsargumente für jede einzelne Download-Anfrage. Weitere Informationen zu Array-Optionen finden Sie im Abschnitt zur Parametersyntax der GetObject-Methode.

$downloadDirectoryRequest Array

Ein Array mit dem Quell-Bucket und dem Zielverzeichnis für den Download-Verzeichnisvorgang.

$reason Throwable

Der Ausnahmehalter, der Informationen darüber enthält, was den Fehler verursacht hat.

$downloadDirectoryResult DownloadDirectoryResult <add link>

Das Objekt, das die Anzahl der erfolgreich heruntergeladenen Objekte und die Anzahl der fehlgeschlagenen Objekte enthält.

Wie funktionieren Verzeichnisoperationen

In diesem Abschnitt wird erklärt, wie der S3 Transfer Manager Dateipfade und Objektschlüssel bei Verzeichnisoperationen verarbeitet.

Behandlung von Upload-Pfaden

Wenn Sie ein Verzeichnis hochladen, erstellt das SDK S3-Objektschlüssel aus Dateipfaden:

  1. Berechnet den Pfad jeder Datei relativ zum Quellverzeichnis

  2. Stellt den s3_prefix Wert voran, falls angegeben (fügt automatisch einen abschließenden Schrägstrich hinzu)

  3. Ersetzt das Betriebssystem-Verzeichnistrennzeichen durch das (Standard) s3_delimiter /

Die recursive Option steuert, ob Unterverzeichnisse eingeschlossen werden. Wenn false (Standard), werden nur Dateien der obersten Ebene hochgeladen. Wenntrue, werden alle Dateien in Unterverzeichnissen hochgeladen, wobei die Verzeichnisstruktur in Objektschlüsseln beibehalten wird.

Anmerkung

Der Schlüssel in S3 für jede hochgeladene Datei ist das angegebene s3-Präfix, standardmäßig ist es Null, plus der relative Pfad der Datei, beginnend mit dem angegebenen Quellverzeichnis. Außerdem ersetzen wir das Verzeichnistrennzeichen im aufgelösten Schlüsselnamen durch das bereitgestellte s3-Trennzeichen, das standardmäßig /ist.

Beispiel 1

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

Verzeichnisstruktur

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

Die Schlüssel für jede Datei lauten:

$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

Beispiel 2

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

Verzeichnisstruktur

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

Die Schlüssel für jede Datei werden sein:

$s3Prefix + $fileRelativePath;
- my-file1.txt - my-file-2.txt - sub-dir/my-another-file1.txt - sub-dir/my-another-file2.txt
Beispiel Verwaltung von Upload-Verzeichnispfaden
<?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

Verwaltung von Download-Pfaden

Wenn Sie ein Verzeichnis herunterladen, erstellt das SDK lokale Dateipfade aus S3-Objektschlüsseln:

  1. Entfernt den s3_prefix aus dem Objektschlüssel, falls angegeben

  2. Ersetzt das S3-Trennzeichen (/) durch das Verzeichnistrennzeichen des Betriebssystems

  3. Fügt das Ergebnis an das Zielverzeichnis an

Downloads sind immer rekursiv. Das SDK ruft alle Objekte unter dem angegebenen Präfix ab und erstellt nach Bedarf Unterverzeichnisse. Aus Sicherheitsgründen überprüft es, dass Pfade nicht außerhalb des Zielverzeichnisses aufgelöst werden.

Beispiel Verwaltung von Verzeichnispfaden herunterladen
<?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
Anmerkung

Der Dateipfad für die heruntergeladenen Objekte wird wie folgt aufgelöst:

  • Das s3-Präfix, falls angegeben, wird aus dem Objektschlüssel entfernt.

  • Wenn sich das s3Delimiter vom Betriebssystem-Verzeichnistrennzeichen unterscheidet, wird das s3-Trennzeichen durch das Betriebssystem-Verzeichnistrennzeichen ersetzt.

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

Sobald diese Objekte heruntergeladen wurden, werden sie wie folgt platziert:

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

Wie wir sehen können, wurde das Präfix aus dem endgültigen Dateipfad für die Objekte entfernt.

Beispiel 2 - ohne s3-Präfix

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

Sobald diese Objekte heruntergeladen wurden, werden sie wie folgt platziert:

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