Utilizzo avanzato - AWS SDK per PHP

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à.

Utilizzo avanzato

Questa sezione descrive i modelli e le tecniche di utilizzo avanzati per S3 Transfer Manager.

Caricamenti in più parti

S3 Transfer Manager utilizza automaticamente caricamenti multiparte per file di grandi dimensioni. È possibile personalizzare questo comportamento con le opzioni di configurazione.

<?php use Aws\S3\S3Transfer\Models\UploadRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, []); $uploadPromise = $transferManager->upload( new UploadRequest( '/path/to/large/file.mp4', [ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'videos/large-file.mp4', ], [ // Use multipart upload for files larger than 100MB. 'multipart_upload_threshold_bytes' => 100 * 1024 * 1024, // Use 25MB parts for multipart uploads. 'target_part_size_bytes' => 25 * 1024 * 1024, ] ) ); $uploadPromise->wait();

Download in più parti

È possibile personalizzare il comportamento di download in più parti.

<?php use Aws\S3\S3Transfer\AbstractMultipartDownloader; use Aws\S3\S3Transfer\Models\DownloadRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, []); $downloadPromise = $transferManager->download( new DownloadRequest( 's3://amzn-s3-demo-bucket/large-file.mp4', [], [ // Use 25MB parts for multipart downloads. 'target_part_size_bytes' => 25 * 1024 * 1024, // Use ranged-based download instead of part-based. 'multipart_download_type' => AbstractMultipartDownloader::RANGED_GET_MULTIPART_DOWNLOADER, ] ) ); $downloadPromise->wait();

Per ulteriori informazioni sugli altri membri della AbstractMultipartDownloader classe, consulta la documentazione <add link> dell'API.

Filtri personalizzati

È possibile utilizzare le funzioni di filtro per caricare o scaricare selettivamente i file per le operazioni sulle directory.

Carica il filtro della directory

Per ulteriori informazioni sulle informazioni sui parametri, vedete l'opzione filter callable del uploadDirectory metodo.

<?php use Aws\S3\S3Transfer\Models\UploadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, []); // Upload files modified in the last 24 hours. $uploadDirPromise = $transferManager->uploadDirectory( new UploadDirectoryRequest( '/path/to/directory', 'amzn-s3-demo-bucket', [], [ 'filter' => function ($file) { $modTime = filemtime($file); return (time() - $modTime) < 86400; // 24 hours }, ] ) ); $uploadDirPromise->wait();

Scarica il filtro della directory

Per ulteriori informazioni sulle informazioni sui parametri, vedete l'opzione filter callable del downloadDirectory metodo.

<?php use Aws\S3\S3Transfer\Models\DownloadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, []); // Download files with a specific prefix. $downloadDirPromise = $transferManager->downloadDirectory( new DownloadDirectoryRequest( 'amzn-s3-demo-bucket', '/path/to/directory', [], [ 'filter' => function ($key) { return strpos($key, 'reports/2023/') === 0; }, ] ) ); $downloadDirPromise->wait();

Richiesta anticipata di callback

È possibile modificare i parametri di richiesta per ogni file utilizzando i callback di pre-richiesta. Per ulteriori informazioni sui parametri, consulta quanto segue:

Esempio di un callback pre-richiesta per il metodo uploadDirectory
<?php use Aws\S3\S3Transfer\Models\UploadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, []); // Set custom metadata for each uploaded file. $uploadDirPromise = $transferManager->uploadDirectory( new UploadDirectoryRequest( '/path/to/directory', 'amzn-s3-demo-bucket', [], [ 'upload_object_request_modifier' => function ($args) { $extension = pathinfo($args['Key'], PATHINFO_EXTENSION); switch ($extension) { case 'jpg': case 'jpeg': $args['ContentType'] = 'image/jpeg'; break; case 'png': $args['ContentType'] = 'image/png'; break; case 'pdf': $args['ContentType'] = 'application/pdf'; break; } $args['Metadata'] = [ 'uploaded_at' => date('Y-m-d H:i:s'), ]; }, ] ) ); $uploadDirPromise->wait();