Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Operaciones de directorio
S3 Transfer Manager puede gestionar transferencias de directorios completos.
Cargar directorio
S3 Transfer Manager puede cargar un directorio completo en un bucket de 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";
Parámetros del método uploadDirectory
El uploadDirectory método acepta una instancia de UploadDirectoryRequest <add link> como argumento.
Parámetros UploadDirectoryRequest
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
|
|
string |
Sí |
Ruta del directorio local que se va a cargar. |
|
|
cadena |
Sí |
Nombre del bucket S3 de destino. |
|
|
array |
No |
Parámetros de solicitud de carga de objetos adicionales para todos los archivos. |
|
|
array |
No |
Opciones de configuración para la carga del directorio. Para obtener más información sobre las opciones de configuración, consulte la siguiente sección. |
|
|
array |
No |
Una matriz de objetos |
|
|
bool |
-1 «Tiempo de ejecución predeterminado» |
Para indicar la profundidad máxima del archivo recursivo, recorra tres pasos. |
|
|
|
No |
Un rastreador del progreso de todas las subidas. |
| Opción | Tipo | Predeterminado | Description (Descripción) |
|---|---|---|---|
|
|
bool |
|
Si se deben cargar subdirectorios de forma recursiva. |
|
|
bool |
|
Si se deben seguir los enlaces simbólicos. |
|
|
cadena |
'' |
Prefijo para añadir a todas las claves de objetos. |
|
|
cadena |
'/' |
El delimitador que se utilizará en las claves de objetos de S3. |
track_progress |
bool | false |
Si se debe realizar un seguimiento del progreso. |
|
|
int | 100 | El número máximo de cargas simultáneas. |
|
|
invocable |
null |
Función para filtrar qué archivos subir. |
|
|
invocable |
null |
Función para personalizar cada solicitud de carga. |
|
|
invocable |
null |
Función para gestionar los errores de carga. |
Tipos de opciones invocables $config
| Nombre de la opción | nombre del parámetro | tipo de parámetro | información del parámetro |
|---|---|---|---|
filter |
$file |
SplFileInfo|cadena |
Si se convierte en cadena, es la ruta del archivo. De lo contrario, es una instancia de |
upload_object_request_modifier |
$requestArgs |
array | Los argumentos de solicitud de cada solicitud de carga individual. Para obtener más información sobre las opciones de matriz, consulte la sección de sintaxis de parámetros del método PutObject. |
failure_policy |
$uploadRequestArgs |
array | Los argumentos de solicitud de cada solicitud de carga individual. Para obtener más información sobre las opciones de matriz, consulte la sección de sintaxis de parámetros del método PutObject para ver las opciones de matriz. |
$uploadDirectoryArgs |
array | Una matriz con el directorio de origen y el depósito de destino para la operación de carga del directorio. | |
$reason |
Throwable|cadena |
El marcador de excepciones que contiene información sobre la causa del error. |
|
$uploadDirectoryResult |
UploadDirectoryResult |
El objeto que contiene el número de objetos cargados correctamente y el número de objetos que han fallado. |
Cuando el uploadDirectory método se ejecuta correctamente, devuelve un UploadDirectoryResult<add link>.
Directorio de descargas
Puede descargar un directorio desde un bucket de 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";
Parámetros del método downloadDirectory
El downloadDirectory método acepta una instancia de DownloadDirectoryRequest <add
link> como argumento.
Parámetros DownloadDirectoryRequest
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
|
|
string |
Sí |
Nombre del depósito de S3 de origen desde el que se descargan los objetos. |
|
|
cadena |
Sí |
Directorio local en el que descargar los archivos. |
|
|
array |
No |
Parámetros adicionales de solicitud de objetos de descarga para todos los archivos. |
|
|
array |
No |
Opciones de configuración para la descarga del directorio. Para obtener más información sobre las opciones de configuración, consulte la siguiente sección. |
|
|
array |
No |
Una matriz de objetos |
|
|
|
No |
Un rastreador del progreso de todas las descargas. |
| Opción | Tipo | Predeterminado | Description (Descripción) |
|---|---|---|---|
|
|
cadena |
'' |
Prefijo para filtrar (si no está |
|
|
bool |
|
Si se debe realizar un seguimiento del progreso. |
|
|
invocable |
|
Función para filtrar qué objetos de S3 descargar. |
|
|
invocable |
|
Función para personalizar cada solicitud de descarga. |
|
|
array |
[] |
Argumentos a favor de la |
|
|
bool |
false |
Si se debe producir un error cuando ya existe la ruta del archivo de destino del objeto. |
|
|
invocable |
null |
Función para gestionar los errores de descarga. |
|
|
int |
100 |
El número máximo de descargas simultáneas. |
|
|
int |
varía |
Tamaño de pieza para descargas de varias partes cuando el tipo de descarga de varias partes está dentro de un intervalo. |
Tipos de opciones invocables $config
| Nombre de la opción | nombre del parámetro | tipo de parámetro | información del parámetro |
|---|---|---|---|
filter |
$objectKey |
cadena |
El nombre de la clave del objeto del depósito. |
download_object_request_modifier |
$requestArgs |
array | Los argumentos de solicitud de cada solicitud de descarga individual. Para obtener más información sobre las opciones de matriz, consulte la sección de sintaxis de los parámetros del método GetObject. |
failure_policy |
$downloadObjectRequestArgs |
array |
Los argumentos de solicitud de cada solicitud de descarga individual. Para obtener más información sobre las opciones de matriz, consulte la sección de sintaxis de los parámetros del método GetObject. |
$downloadDirectoryRequest |
array |
Una matriz con el depósito de origen y el directorio de destino para la operación de directorio de descargas. |
|
$reason |
Throwable |
El contenedor de excepciones que contiene información sobre la causa del error. |
|
$downloadDirectoryResult |
DownloadDirectoryResult <add
link> |
El objeto que contiene el número de objetos descargados correctamente y el número de objetos que han fallado. |
Cómo funcionan las operaciones de directorio
En esta sección se explica cómo el S3 Transfer Manager gestiona las rutas de los archivos y las claves de los objetos durante las operaciones de directorio.
Gestión de las rutas de carga
Al cargar un directorio, el SDK crea claves de objetos de S3 a partir de las rutas de los archivos:
-
Calcula la ruta de cada archivo en relación con el directorio de origen
-
Antepone el
s3_prefixvalor si se especifica (añade automáticamente una barra diagonal final) -
Sustituye el separador de directorios del sistema operativo por el (predeterminado)
s3_delimiter/
La recursive opción controla si se incluyen los subdirectorios. Cuando false (predeterminado), solo se cargan los archivos de nivel superior. Cuandotrue, se cargan todos los archivos de los subdirectorios, conservando la estructura de directorios en las claves de objetos.
nota
La clave en S3 para cada archivo cargado será el prefijo s3 proporcionado, que de forma predeterminada es nulo, más la ruta relativa del archivo que comienza en el directorio de origen especificado. Además, sustituimos el separador de directorios del nombre de clave resuelto por el delimitador s3 proporcionado, que de forma predeterminada será /.
Ejemplo 1
$sourceDirectory = "/opt/my-upload-directory"; $s3Prefix = "important/"; $s3Delimiter = "/"; // Default value
Estructura de directorios
/opt/my-upload-directory/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt
Las claves de cada archivo serán:
$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
Ejemplo 2
$sourceDirectory = "/opt/my-docs"; $s3Prefix = ''; // No provided and it will defaulted to empty string $s3Delimiter = "/"; // Default value
Estructura de directorios
/opt/my-docs/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt
Las claves de cada archivo serán:
$s3Prefix + $fileRelativePath;
- my-file1.txt - my-file-2.txt - sub-dir/my-another-file1.txt - sub-dir/my-another-file2.txt
ejemplo Gestión de la ruta del directorio de carga
<?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
Gestión de rutas de descarga
Al descargar un directorio, el SDK crea rutas de archivos locales a partir de claves de objetos de S3:
-
Elimina la clave
s3_prefixdel objeto si se especifica -
Sustituye el delimitador S3 (
/) por el separador de directorios del sistema operativo -
Añade el resultado al directorio de destino
Las descargas son siempre recursivas. El SDK recupera todos los objetos con el prefijo especificado y crea subdirectorios según sea necesario. Valida que las rutas no se resuelvan fuera del directorio de destino por motivos de seguridad.
ejemplo Gestión de las rutas del directorio de descargas
<?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
La ruta del archivo de los objetos descargados se resolverá de la siguiente manera:
-
El prefijo s3, si se proporciona, se eliminará de la clave del objeto.
-
Si el delimitador S3 es diferente del separador de directorios del sistema operativo, el delimitador s3 se sustituirá por el separador de directorios del sistema operativo.
Ejemplo 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 vez descargados esos objetos se colocarán de la siguiente manera:
/opt/bucket/downloads/ -- file-1.txt -- file-2.txt -- subdir/ ---- file-1.txt
Como podemos ver, el prefijo se eliminó de la ruta final del archivo de los objetos.
Ejemplo 2: sin el prefijo 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 vez descargados esos objetos se colocarán de la siguiente manera:
/opt/bucket/downloads/ -- README.md -- my-docs/ ---- file-1.txt ---- file-2.txt ---- statements/ ------ file-1.txt