Operaciones con archivos - AWS SDK para PHP

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 con archivos

S3 Transfer Manager proporciona métodos para cargar y descargar archivos individuales.

Cargue archivos locales

Para cargar un archivo en Amazon S3, utilice el upload <add link> método.

<?php use Aws\S3\S3Transfer\Models\UploadRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); // Source can be from a local path to a file. $source = '/path/to/local/file.txt'; // Or the source can be an instance of StreamInterface. $source = GuzzleHttp\Psr7\Utils::streamFor('Hello World!'); $uploadPromise = $transferManager->upload( new UploadRequest( $source, [ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'path/to/s3/file.txt', // Additional `putObject` parameters as needed. ], [ // Optional configuration overrides. 'multipart_upload_threshold_bytes' => 100 * 1024 * 1024, // 100MB 'target_part_size_bytes' => 10 * 1024 * 1024, // 10MB 'track_progress' => true, 'request_checksum_calculation' => 'when_required', ] ) ); // The upload is asynchronous, you can wait for it to complete. $result = $uploadPromise->wait(); // Or you can use the promise for more complex workflows. $result = $uploadPromise->then( function ($result) { echo "Upload succeeded!"; }, function ($error) { echo "Upload failed: " . $error->getMessage(); } )->wait();

Parámetros del método upload

El upload método acepta una instancia de UploadRequest <add link> como argumento.

Parámetros UploadRequest

Parámetro Tipo Obligatorio Description (Descripción)

$source

cadena| StreamInterface

Ruta del archivo local o del flujo que contiene los datos que se van a cargar.

$uploadRequestArgs

array

Cargue los argumentos de la solicitud (deben incluir Bucket y Key).

$config

array

No

Las anulaciones de configuración específicas de esta carga. Para obtener más información sobre las opciones de configuración, consulte la siguiente sección.

$listeners

array

No

Matriz de TransferListener objetos para supervisar esta carga.

$progressTracker

TransferListener

No

Un rastreador del progreso de esta carga.

El SDK resuelve el $config valor predeterminado de la configuración del S3 Transfer Manager.

Opción Tipo Obligatorio Description (Descripción)

multipart_upload_threshold_bytes

int

No

Anula el umbral predeterminado para cuando se activa una carga multiparte.

target_part_size_bytes

int

No

Anula el tamaño de la parte de destino predeterminado en bytes.

track_progress

bool

No

Anula la opción por defecto para permitir el seguimiento del progreso. Si esta opción es true válida y no proporcionas ningún progressTracker parámetro, el SDK usa una implementación predeterminada.

concurrency

int

No

Anula el valor predeterminado de la simultaneidad.

request_checksum_calculation

cadena

No

Anula el valor predeterminado para determinar si se debe realizar el cálculo de la suma de comprobación de una solicitud.

Cuando el upload método se ejecuta correctamente, devuelve un. UploadResult <add link>

Descarga objetos S3

Para descargar un objeto de Amazon S3, utilice el download <add link> método.

<?php use Aws\S3\S3Transfer\Models\DownloadRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); // Download using an S3 URI. $downloadPromise = $transferManager->download( new DownloadRequest( 's3://amzn-s3-demo-bucket/path/to/s3/file.txt', [ // Additional `getObject` parameters as needed. ], [ // Optional configuration overrides. 'response_checksum_validation' => 'when_required', 'track_progress' => true, 'target_part_size_bytes' => 10 * 1024 * 1024, // 10MB ] ) ); // Wait for the download to complete. $result = $downloadPromise->wait(); // The SDK uses a stream-based download handler by default. $stream = $result->getDownloadDataResult(); // You can either get the content. $content = $stream->getContents(); // Or write the stream to a file. file_put_contents('/path/to/local/file.txt', $stream); // Don't forget to close the stream. $stream->close();

Parámetros del método download

El download método acepta una instancia de DownloadRequest <add link> como argumento.

Parámetros DownloadRequest

Parámetro Tipo Obligatorio Description (Descripción)

$source

cadena|matriz| null

No

El objeto que se va a descargar de S3. Puede proporcionar este parámetro como una cadena URI de S3 (» s3://amzn-s3-demo-bucket/key «), una matriz con las claves Bucket y Key, onull. Cuando este valor seanull, transfiera los valores Bucket y Key al $downloadRequestArgs parámetro.

$downloadRequestArgs

array

No

Argumentos adicionales de solicitud de objetos de descarga. Si $source es null así, proporciona aquí los valores Bucket y Key.

$config

array

No

Sustituciones de configuración específicas de esta descarga. Para obtener más información sobre las opciones de configuración, consulte la siguiente sección.

$downloadHandler

AbstractDownloadHandler<add link>|null

No

El controlador que recibe cada fragmento de objeto y gestiona su descarga.

El controlador predeterminado del download método usa un controlador basado en flujos. Este controlador empuja cada fragmento de objeto a un flujo.

El controlador predeterminado del downloadFile método (consulteDescarga un objeto S3 a un archivo local) usa un controlador basado en archivos. Este controlador escribe cada fragmento en un archivo.

Puedes implementar el tuyo propio DownloadHandler para personalizar dónde y cómo almacena el SDK los datos descargados. Por ejemplo, puede almacenar los datos en bases de datos, almacenamiento en la nube o canalizaciones de procesamiento personalizadas en lugar de archivos o transmisiones.

$progressTracker

TransferListener

No

Un rastreador de progreso para esta descarga.

$listeners

array

No

Conjunto de AbstractTransferListener objetos para monitorear esta descarga.

El SDK resuelve el $config valor predeterminado de la configuración del S3 Transfer Manager.

Opción Tipo Obligatorio Descripción

multipart_download_type

cadena

No

Anula el tipo de descarga multiparte predeterminado. Los valores válidos son «parte» y «rango»

response_checksum_validation

cadena

No

Anula el valor resuelto de la configuración del administrador de transferencias para determinar si se debe realizar la validación de la suma de verificación. El SDK considera esta opción solo si no ChecksumMode está presente en $getObjectRequestArgs el. DownloadRequest

track_progress

bool

No

Anula la opción predeterminada para habilitar el seguimiento del progreso. Si esta opción es true válida y no se proporciona ningún progressTracker parámetro, DownloadRequest, el SDK utilizará una implementación predeterminada.

Usa esta opción para habilitar un rastreador de progreso predeterminado cuando el $progressTracker parámetro seanull.

target_part_size_bytes

int

No

El tamaño de la pieza en bytes que se utilizará en una descarga multiparte de un rango. Si no proporciona este parámetro, la descarga utilizará el target_part_size_bytes configurado en el administrador de transferencias.

Cuando el download método se ejecuta correctamente, devuelve un DownloadResult<add link>.

Descarga un objeto S3 a un archivo local

Para descargar un objeto S3 directamente a un archivo local, utilice el downloadFile método:

<?php use Aws\S3\S3Transfer\Models\DownloadFileRequest; use Aws\S3\S3Transfer\Models\DownloadRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $downloadFilePromise = $transferManager->downloadFile( new DownloadFileRequest( '/path/to/local/file.txt', // Destination file path. false, // Fail when destination exists. new DownloadRequest( 's3://amzn-s3-demo-bucket/path/to/s3/file.txt', [], // `getObject` request args [ 'track_progress' => true, 'target_part_size_bytes' => 10 * 1024 * 1024, // 10MB parts ] ) ) ); // Wait for download to complete. $result = $downloadFilePromise->wait(); // `getDownloadDataResult()` returns the string for the file path of the downloaded content because // the default `DownloadHandler` used by `downloadFile()` is a file-based handler. echo "File downloaded successfully at {$result->getDownloadDataResult()}!\n";

Parámetros del método downloadFile

El downloadFile método acepta una instancia de DownloadFileRequest como argumento.

Parámetros DownloadFileRequest

Opción Tipo Obligatorio Descripción

$destination

string

Ruta local donde se guarda el archivo.

$failsWhenDestinationExists

bool

Si se va a producir un error si el archivo de destino ya existe. Si esta opción es válida false y el archivo de destino existe, el SDK elimina o anula el archivo existente.

$downloadRequest

DownloadRequest

El objeto configuradoDownloadRequest. Para obtener más información, consulte DownloadRequestobjeto.

Cuando el downloadFile método se ejecuta correctamente, devuelve un DownloadResult<add link>.