Ready-to-use exemples - AWS SDK pour PHP

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ready-to-use exemples

Cette section fournit une classe d'assistance complète avec des méthodes statiques pour les opérations courantes de S3 Transfer Manager. La classe d'assistance simplifie l'utilisation. Il gère l'initialisation et la configuration en interne.

TransferHelper Classe S3

<?php use Aws\S3\S3Transfer\Models\DownloadDirectoryRequest; use Aws\S3\S3Transfer\Models\DownloadFileRequest; use Aws\S3\S3Transfer\Models\DownloadRequest; use Aws\S3\S3Transfer\Models\UploadDirectoryRequest; use Aws\S3\S3Transfer\Models\UploadRequest; use Aws\S3\S3Transfer\S3TransferManager; use Psr\Http\Message\StreamInterface; class S3TransferHelper { /** * Upload a file from a local path to S3. */ public static function uploadFile( string $filePath, string $bucket, string $key ): array { $transferManager = new S3TransferManager(); $uploadRequest = new UploadRequest( $filePath, [ 'Bucket' => $bucket, 'Key' => $key, ], [] ); return $transferManager->upload($uploadRequest)->wait()->getResult(); } /** * Upload from a stream to S3 */ public static function uploadFromStream( StreamInterface $stream, string $bucket, string $key, bool $trackProgress = true, ): array { $transferManager = new S3TransferManager(); $uploadRequest = new UploadRequest( $stream, [ 'Bucket' => $bucket, 'Key' => $key, ], ['track_progress' => $trackProgress] ); return $transferManager->upload($uploadRequest)->wait()->getResult(); } /** * Download a file from S3 to a local path */ public static function downloadFile( string $bucket, string $key, string $destinationPath, bool $failsWhenDestinationExists = false, bool $trackProgress = true, ): void { $transferManager = new S3TransferManager(); $downloadRequest = new DownloadRequest( [ 'Bucket' => $bucket, 'Key' => $key ], [], ['track_progress' => $trackProgress] ); $downloadFileRequest = new DownloadFileRequest( $destinationPath, $failsWhenDestinationExists, $downloadRequest ); $transferManager->downloadFile($downloadFileRequest)->wait(); } /** * Upload an entire directory to S3 */ public static function uploadDirectory( string $sourceDirectory, string $bucket, string $s3Prefix = '', bool $trackProgress = true, ): array { $transferManager = new S3TransferManager(); $uploadDirectoryRequest = new UploadDirectoryRequest( $sourceDirectory, $bucket, [], [ 's3_prefix' => $s3Prefix, 'track_progress' => $trackProgress, ] ); $result = $transferManager->uploadDirectory($uploadDirectoryRequest)->wait(); return [ 'uploaded' => $result->getObjectsUploaded(), 'failed' => $result->getObjectsFailed(), ]; } /** * Download directory from S3 */ public static function downloadDirectory( string $bucket, string $destinationDirectory, string $s3Prefix = '', bool $trackProgress = true, ): array { $transferManager = new S3TransferManager(); $downloadDirectoryRequest = new DownloadDirectoryRequest( $bucket, $destinationDirectory, [], [ 's3_prefix' => $s3Prefix, 'track_progress' => $trackProgress, ] ); $result = $transferManager->downloadDirectory($downloadDirectoryRequest)->wait(); return [ 'downloaded' => $result->getObjectsDownloaded(), 'failed' => $result->getObjectsFailed(), ]; } }

Exemples d'utilisation de la classe d'assistance

Les exemples suivants montrent comment utiliser la S3TransferHelper classe.

<?php require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/S3TransferHelper.php'; // Upload a local file $result = S3TransferHelper::uploadFile( '/path/to/local/document.pdf', 'amzn-s3-demo-bucket', 'documents/document.pdf' ); echo "File uploaded successfully. ETag: " . $result['ETag'] . "\n"; // Download a file to local path S3TransferHelper::downloadFile( 'amzn-s3-demo-bucket', 'documents/document.pdf', '/path/to/local/downloaded-document.pdf', false, // Don't fail if destination exists true // Track progress ); echo "File downloaded successfully!\n"; // Upload entire directory $result = S3TransferHelper::uploadDirectory( '/path/to/local/photos', 'amzn-s3-demo-bucket', 'photos/vacation-2023/', // S3 prefix true // Track progress ); echo "Directory upload completed.\n"; echo "Uploaded: {$result['uploaded']} files\n"; echo "Failed: {$result['failed']} files\n"; // Download directory from S3 $result = S3TransferHelper::downloadDirectory( 'amzn-s3-demo-bucket', '/path/to/local/downloads', 'photos/vacation-2023/', // S3 prefix to download true // Track progress ); echo "Directory download completed.\n"; echo "Downloaded: {$result['downloaded']} files\n"; echo "Failed: {$result['failed']} files\n";