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 |
|---|---|---|---|
|
|
Zeichenfolge |
Ja |
Pfad des lokalen Verzeichnisses, das hochgeladen werden soll. |
|
|
Zeichenfolge |
Ja |
Name des Ziel-S3-Buckets. |
|
|
Array |
Nein |
Zusätzliche Upload-Objektanforderungsparameter für alle Dateien. |
|
|
Array |
Nein |
Konfigurationsoptionen für den Verzeichnis-Upload. Weitere Informationen zu den Konfigurationsoptionen finden Sie im folgenden Abschnitt. |
|
|
Array |
Nein |
Array von |
|
|
bool |
-1 „Standardlaufzeit“ |
Um die maximale Tiefe der rekursiven Datei anzugeben, laufen drei Schritte. |
|
|
|
Nein |
Ein Fortschritts-Tracker für alle Uploads. |
| Option | Typ | Standard | Description |
|---|---|---|---|
|
|
bool |
|
Ob Unterverzeichnisse rekursiv hochgeladen werden sollen. |
|
|
bool |
|
Ob symbolischen Links gefolgt werden soll. |
|
|
Zeichenfolge |
'' |
Präfix, das allen Objektschlüsseln hinzugefügt werden soll. |
|
|
Zeichenfolge |
'/' |
Das in S3-Objektschlüsseln zu verwendende Trennzeichen. |
track_progress |
bool | false |
Ob der Fortschritt verfolgt werden soll. |
|
|
int | 100 | Die maximale Anzahl gleichzeitiger Uploads. |
|
|
aufrufbar |
Null |
Funktion zum Filtern der hochzuladenden Dateien. |
|
|
aufrufbar |
Null |
Funktion zum Anpassen jeder Upload-Anfrage. |
|
|
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 von |
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 |
|---|---|---|---|
|
|
Zeichenfolge |
Ja |
Name des Quell-S3-Buckets, aus dem Objekte heruntergeladen werden. |
|
|
Zeichenfolge |
Ja |
Lokales Verzeichnis, in das Dateien heruntergeladen werden. |
|
|
Array |
Nein |
Zusätzliche Parameter für die Anforderung von Download-Objekten für alle Dateien. |
|
|
Array |
Nein |
Konfigurationsoptionen für den Verzeichnis-Download. Weitere Informationen zu den Konfigurationsoptionen finden Sie im folgenden Abschnitt. |
|
|
Array |
Nein |
Array von |
|
|
|
Nein |
Ein Fortschritts-Tracker für alle Downloads. |
| Option | Typ | Standard | Description |
|---|---|---|---|
|
|
Zeichenfolge |
'' |
Präfix für die Filterung (falls nicht |
|
|
bool |
|
Ob der Fortschritt verfolgt werden soll. |
|
|
aufrufbar |
|
Funktion zum Filtern, welche S3-Objekte heruntergeladen werden sollen. |
|
|
aufrufbar |
|
Funktion zum Anpassen jeder Download-Anfrage. |
|
|
Array |
[] |
Argumente für die |
|
|
bool |
false |
Gibt an, ob ein Fehler auftreten soll, wenn ein Zieldateipfad für das Objekt bereits vorhanden ist. |
|
|
aufrufbar |
Null |
Funktion zur Behandlung von Download-Fehlern. |
|
|
int |
100 |
Die maximale Anzahl gleichzeitiger Downloads. |
|
|
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:
-
Berechnet den Pfad jeder Datei relativ zum Quellverzeichnis
-
Stellt den
s3_prefixWert voran, falls angegeben (fügt automatisch einen abschließenden Schrägstrich hinzu) -
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:
-
Entfernt den
s3_prefixaus dem Objektschlüssel, falls angegeben -
Ersetzt das S3-Trennzeichen (
/) durch das Verzeichnistrennzeichen des Betriebssystems -
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