Fortgeschrittene Verwendung - AWS SDK für PHP

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.

Fortgeschrittene Verwendung

In diesem Abschnitt werden erweiterte Nutzungsmuster und Techniken für den S3 Transfer Manager behandelt.

Mehrteilige Uploads

S3 Transfer Manager verwendet automatisch mehrteilige Uploads für große Dateien. Sie können dieses Verhalten mit Konfigurationsoptionen anpassen.

<?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();

Mehrteilige Downloads

Sie können das Verhalten mehrteiliger Downloads anpassen.

<?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();

Weitere Informationen zu anderen Mitgliedern der AbstractMultipartDownloader Klasse finden Sie in der API-Dokumentation<add link>.

Benutzerdefinierte Filter

Sie können Filterfunktionen verwenden, um Dateien für Verzeichnisoperationen selektiv hoch- oder herunterzuladen.

Verzeichnisfilter hochladen

Weitere Informationen zu Parameterinformationen finden Sie in der aufrufbaren Filter-Option der uploadDirectory Methode.

<?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();

Laden Sie den Verzeichnisfilter herunter

Weitere Informationen zu Parameterinformationen finden Sie in der aufrufbaren Filter-Option der downloadDirectory Methode.

<?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();

Rückrufe vor der Anforderung

Sie können die Anforderungsparameter für jede Datei mithilfe von Pre-Request-Callbacks ändern. Weitere Informationen zu Parametern finden Sie im Folgenden:

Beispiel eines Rückrufs für die Methode uploadDirectory vor der Anfrage
<?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();