Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Operasi direktori
S3 Transfer Manager dapat menangani seluruh transfer direktori.
Unggah direktori
S3 Transfer Manager dapat mengunggah seluruh direktori ke bucket S3. <Are the key values the filenames when
uploaded?>
<?php use Aws\S3\S3Transfer\Models\UploadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $uploadDirPromise = $transferManager->uploadDirectory( new UploadDirectoryRequest( '/path/to/local/directory', 'amzn-s3-demo-bucket', [ // Additional `putObject` parameters that apply to all files. 'ACL' => 'public-read', 'CacheControl' => 'max-age=3600', ], [ // Configuration options. 'recursive' => true, 'follow_symbolic_links' => false, 's3_prefix' => 'uploads/2023/', 's3_delimiter' => '/', 'track_progress' => true, 'filter' => function ($file) { // Upload only .jpg files. return pathinfo($file, PATHINFO_EXTENSION) === 'jpg'; }, 'upload_object_request_modifier' => function ($args) { // Customize request arguments for each file. $args['ContentType'] = 'image/jpeg'; }, ] ) ); // Wait for the upload process to complete. $result = $uploadDirPromise->wait(); $uploaded = $result->getObjectsUploaded(); $failed = $result->getObjectsFailed(); echo "Uploaded {$uploaded} files. Failed: {$failed}\n";
Parameter metode uploadDirectory
uploadDirectoryMetode ini menerima instance dari UploadDirectoryRequest <add link> sebagai argumen.
Parameter UploadDirectoryRequest
| Parameter | Jenis | Diperlukan | Deskripsi |
|---|---|---|---|
|
|
string |
Ya |
Jalur direktori lokal untuk diunggah. |
|
|
string |
Ya |
Nama bucket S3 tujuan. |
|
|
array |
Tidak |
Parameter permintaan objek unggahan tambahan untuk semua file. |
|
|
array |
Tidak |
Opsi konfigurasi untuk upload direktori. Untuk informasi selengkapnya tentang opsi konfigurasi, lihat bagian berikut. |
|
|
array |
Tidak |
Array |
|
|
bool |
-1 “Runtime default” |
Untuk menunjukkan kedalaman maksimum file rekursif tiga jalan. |
|
|
|
Tidak |
Pelacak kemajuan untuk semua unggahan. |
| Opsi | Jenis | Default | Deskripsi |
|---|---|---|---|
|
|
bool |
|
Apakah akan mengunggah subdirektori secara rekursif. |
|
|
bool |
|
Apakah akan mengikuti tautan simbolis. |
|
|
string |
'' |
Awalan untuk menambahkan ke semua tombol objek. |
|
|
string |
'/' |
Pembatas untuk digunakan dalam kunci objek S3. |
track_progress |
bool | false |
Apakah akan melacak kemajuan. |
|
|
int | 100 | Jumlah maksimum unggahan bersamaan. |
|
|
dapat dipanggil |
null |
Berfungsi untuk memfilter file mana yang akan diunggah. |
|
|
dapat dipanggil |
null |
Fungsi untuk menyesuaikan setiap permintaan unggahan. |
|
|
dapat dipanggil |
null |
Berfungsi untuk menangani kegagalan upload. |
Jenis opsi yang dapat dipanggil $config
| Nama opsi | nama parameter | jenis parameter | info parameter |
|---|---|---|---|
filter |
$file |
SplFileInfo|string |
Jika dilemparkan ke string, itu adalah jalur file. Jika tidak, itu adalah contoh dari |
upload_object_request_modifier |
$requestArgs |
array | Argumen permintaan untuk setiap permintaan upload individu. Untuk informasi selengkapnya tentang opsi array, lihat bagian sintaks parameter dari metode putObject. |
failure_policy |
$uploadRequestArgs |
array | Argumen permintaan untuk setiap permintaan upload individu. Untuk informasi selengkapnya tentang opsi array, lihat bagian sintaks parameter dari metode putObject untuk opsi array. |
$uploadDirectoryArgs |
array | Array dengan direktori sumber dan bucket target untuk operasi direktori upload. | |
$reason |
Throwable|string |
Pemegang pengecualian yang berisi informasi tentang apa yang menyebabkan kegagalan. |
|
$uploadDirectoryResult |
UploadDirectoryResult |
Objek yang berisi jumlah objek yang berhasil diunggah dan nomor yang gagal. |
Ketika uploadDirectory metode berjalan dengan sukses, ia mengembalikan file UploadDirectoryResult<add link>.
Direktori unduhan
Anda dapat mengunduh direktori dari bucket S3. <Are the filenames
the key values when downloaded? If there is no extension in the key, is there
also no extension on the file?>
<?php use Aws\S3\S3Transfer\Models\DownloadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $downloadDirPromise = $transferManager->downloadDirectory( new DownloadDirectoryRequest( 'amzn-s3-demo-bucket', '/path/to/local/directory', [ // Additional `getObject` parameters that apply to all files. ], [ // Configuration options. 's3_prefix' => 'uploads/2023/', 's3_delimiter' => '/', 'track_progress' => true, 'filter' => function ($key) { // Download only .jpg files. return pathinfo($key, PATHINFO_EXTENSION) === 'jpg'; }, 'download_object_request_modifier' => function ($args) { // Customize request arguments for each file. $args['ResponseContentType'] = 'image/jpeg'; }, 'list_objects_v2_args' => [ 'MaxKeys' => 1000, 'Prefix' => 'uploads/2023/', ], 'fails_when_destination_exists' => true, ] ) ); // Wait for the download process to complete. $result = $downloadDirPromise->wait(); $downloaded = $result->getObjectsDownloaded(); $failed = $result->getObjectsFailed(); echo "Downloaded {$downloaded} files. Failed: {$failed}\n";
Parameter metode downloadDirectory
downloadDirectoryMetode ini menerima instance dari DownloadDirectoryRequest <add
link> sebagai argumen.
Parameter DownloadDirectoryRequest
| Parameter | Jenis | Diperlukan | Deskripsi |
|---|---|---|---|
|
|
string |
Ya |
Sumber nama bucket S3 dari mana objek diunduh. |
|
|
string |
Ya |
Direktori lokal untuk mengunduh file ke. |
|
|
array |
Tidak |
Parameter permintaan objek unduhan tambahan untuk semua file. |
|
|
array |
Tidak |
Opsi konfigurasi untuk unduhan direktori. Untuk informasi selengkapnya tentang opsi konfigurasi, lihat bagian berikut. |
|
|
array |
Tidak |
Array |
|
|
|
Tidak |
Pelacak kemajuan untuk semua unduhan. |
| Opsi | Jenis | Default | Deskripsi |
|---|---|---|---|
|
|
string |
'' |
Awalan untuk pemfilteran (jika tidak di |
|
|
bool |
|
Apakah akan melacak kemajuan. |
|
|
dapat dipanggil |
|
Berfungsi untuk memfilter objek S3 mana yang akan diunduh. |
|
|
dapat dipanggil |
|
Fungsi untuk menyesuaikan setiap permintaan unduhan. |
|
|
array |
[] |
Argumen untuk |
|
|
bool |
false |
Apakah akan gagal ketika jalur file tujuan objek sudah ada. |
|
|
dapat dipanggil |
null |
Berfungsi untuk menangani kegagalan unduhan. |
|
|
int |
100 |
Jumlah maksimum unduhan bersamaan. |
|
|
int |
bervariasi |
Ukuran bagian untuk unduhan multibagian saat jenis unduhan multibagian berkisar. |
Jenis opsi yang dapat dipanggil $config
| Nama opsi | nama parameter | jenis parameter | info parameter |
|---|---|---|---|
filter |
$objectKey |
string |
Nama kunci objek dari ember. |
download_object_request_modifier |
$requestArgs |
array | Argumen permintaan untuk setiap permintaan unduhan individu. Untuk informasi selengkapnya tentang opsi array, lihat bagian sintaks parameter dari metode getObject. |
failure_policy |
$downloadObjectRequestArgs |
array |
Argumen permintaan untuk setiap permintaan unduhan individu. Untuk informasi selengkapnya tentang opsi array, lihat bagian sintaks parameter dari metode getObject. |
$downloadDirectoryRequest |
array |
Array dengan bucket sumber dan direktori target untuk operasi direktori unduhan. |
|
$reason |
Throwable |
Pemegang pengecualian yang berisi informasi tentang apa yang menyebabkan kegagalan. |
|
$downloadDirectoryResult |
DownloadDirectoryResult <add
link> |
Objek yang berisi jumlah objek yang berhasil diunduh dan nomor yang gagal. |
Bagaimana operasi direktori bekerja
Bagian ini menjelaskan bagaimana S3 Transfer Manager menangani jalur file dan kunci objek selama operasi direktori.
Upload penanganan jalur
Saat Anda mengunggah direktori, SDK akan membuat kunci objek S3 dari jalur file:
-
Menghitung jalur setiap file relatif terhadap direktori sumber
-
Menambahkan
s3_prefixnilai jika ditentukan (secara otomatis menambahkan garis miring) -
Mengganti pemisah direktori OS dengan
s3_delimiter(default)/
recursiveOpsi mengontrol apakah subdirektori disertakan. Ketika false (default), hanya file tingkat atas yang diunggah. Kapantrue, semua file di subdirektori diunggah, melestarikan struktur direktori dalam kunci objek.
catatan
Kunci di S3 untuk setiap file yang diunggah adalah awalan s3 yang disediakan, secara default adalah null, ditambah jalur relatif file yang dimulai dari direktori sumber yang ditentukan. Juga, kami mengganti pemisah direktori dalam nama kunci yang diselesaikan dengan pembatas s3 yang disediakan, yang secara default akan menjadi /.
Contoh 1
$sourceDirectory = "/opt/my-upload-directory"; $s3Prefix = "important/"; $s3Delimiter = "/"; // Default value
Struktur Direktori
/opt/my-upload-directory/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt
Kunci untuk setiap file adalah:
$s3Prefix + $fileRelativePath;
- important/my-file1.txt - important/my-file-2.txt - important/sub-dir/my-another-file1.txt - important/sub-dir/my-another-file2.txt
Contoh 2
$sourceDirectory = "/opt/my-docs"; $s3Prefix = ''; // No provided and it will defaulted to empty string $s3Delimiter = "/"; // Default value
Struktur Direktori
/opt/my-docs/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt
Kunci untuk setiap file adalah:
$s3Prefix + $fileRelativePath;
- my-file1.txt - my-file-2.txt - sub-dir/my-another-file1.txt - sub-dir/my-another-file2.txt
contoh Upload penanganan jalur direktori
<?php // Source directory: /home/user/photos/ // fla/beach.jpg // fla/sunset.jpg // fla/pool/party.jpg // With s3_prefix: '2023' and recursive: true // Results: // 2023/fla/beach.jpg // 2023/fla/sunset.jpg // 2023/fla/pool/party.jpg
Unduh penanganan jalur
Saat Anda mengunduh direktori, SDK akan membuat jalur file lokal dari kunci objek S3:
-
Menghapus
s3_prefixdari kunci objek jika ditentukan -
Mengganti pembatas S3 (
/) dengan pemisah direktori OS -
Menambahkan hasil ke direktori tujuan
Download selalu bersifat rekursif. SDK mengambil semua objek di bawah awalan yang ditentukan dan membuat subdirektori sesuai kebutuhan. Ini memvalidasi bahwa jalur tidak menyelesaikan di luar direktori tujuan untuk keamanan.
contoh Unduh penanganan jalur direktori
<?php // S3 objects: // 2023/fla/beach.jpg // 2023/fla/sunset.jpg // 2023/fla/pool/party.jpg // With s3_prefix: '2023' and destination: /home/user/downloads // Results: // /home/user/downloads/fla/beach.jpg // /home/user/downloads/fla/sunset.jpg // /home/user/downloads/fla/pool/party.jpg
catatan
Jalur file untuk objek yang diunduh akan diselesaikan sebagai berikut:
-
Awalan s3, jika disediakan, akan dihapus dari kunci objek.
-
Jika S3delimiter berbeda dari pemisah direktori OS maka, pembatas s3 akan diganti dengan pemisah direktori OS.
Contoh 1
$s3Prefix = "my-prefix"; $s3Objects = [ "my-prefix/file-1.txt", "my-prefix/file-2.txt", "my-prefix/subdir/file-1.txt" ]; $targetDirectory = "/opt/bucket/downloads/";
Setelah benda-benda tersebut diunduh akan ditempatkan sebagai berikut:
/opt/bucket/downloads/ -- file-1.txt -- file-2.txt -- subdir/ ---- file-1.txt
Seperti yang bisa kita lihat, awalan telah dihapus dari jalur file akhir untuk objek.
Contoh 2 - tanpa awalan s3
$s3Prefix = ""; // No provided $s3Objects = [ "README.md", "my-docs/file-1.txt", "my-docs/file-2.txt", "my-docs/statements/file-1.txt" ]; $targetDirectory = "/opt/bucket/downloads/";
Setelah benda-benda tersebut diunduh akan ditempatkan sebagai berikut:
/opt/bucket/downloads/ -- README.md -- my-docs/ ---- file-1.txt ---- file-2.txt ---- statements/ ------ file-1.txt