

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
<a name="advanced-usage"></a>

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

## Mehrteilige Uploads
<a name="multipart-uploads"></a>

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
<a name="multipart-downloads"></a>

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
<a name="custom-filters"></a>

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

### Verzeichnisfilter hochladen
<a name="custom-filter-upload-dir"></a>

Weitere Informationen zu Parameterinformationen finden Sie in der [aufrufbaren Filter-Option](directory-operations.md#upload-directory-config-callables) 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
<a name="custom-filter-download-dir"></a>

Weitere Informationen zu Parameterinformationen finden Sie in der [aufrufbaren Filter-Option](directory-operations.md#download-dir-callable-options) 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
<a name="pre-request-callbacks"></a>

Sie können die Anforderungsparameter für jede Datei mithilfe von Pre-Request-Callbacks ändern. Weitere Informationen zu Parametern finden Sie im Folgenden:
+ [put\_object\_request\_callaback](directory-operations.md#upload-directory-config-callables), aufrufbare Option der Methode `uploadDirectory`
+ [download\_object\_request\_modifier, aufrufbare Option](directory-operations.md#download-dir-callable-options) der Methode `downloadDirectory`

**Example 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();
```