Operasi direktori - AWS SDK untuk PHP

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

$sourceDirectory

string

Ya

Jalur direktori lokal untuk diunggah.

$targetBucket

string

Ya

Nama bucket S3 tujuan.

$uploadRequestArgs

array

Tidak

Parameter permintaan objek unggahan tambahan untuk semua file.

$config

array

Tidak

Opsi konfigurasi untuk upload direktori. Untuk informasi selengkapnya tentang opsi konfigurasi, lihat bagian berikut.

$listeners

array

Tidak

Array TransferListener objek. SDK mengkloning masing-masing TransferListener per file.

$max_depth

bool

-1 “Runtime default”

Untuk menunjukkan kedalaman maksimum file rekursif tiga jalan.

$progressTracker

TransferListener

Tidak

Pelacak kemajuan untuk semua unggahan.

Opsi Jenis Default Deskripsi

recursive

bool

false

Apakah akan mengunggah subdirektori secara rekursif.

follow_symbolic_links

bool

false

Apakah akan mengikuti tautan simbolis.

s3_prefix

string

''

Awalan untuk menambahkan ke semua tombol objek.

s3_delimiter

string

'/'

Pembatas untuk digunakan dalam kunci objek S3.

track_progress bool false Apakah akan melacak kemajuan.

max_concurrency

int 100 Jumlah maksimum unggahan bersamaan.

filter

dapat dipanggil

null

Berfungsi untuk memfilter file mana yang akan diunggah.

upload_object_request_modifier

dapat dipanggil

null

Fungsi untuk menyesuaikan setiap permintaan unggahan.

failure_policy

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

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

$sourceBucket

string

Ya

Sumber nama bucket S3 dari mana objek diunduh.

$destinationDirectory

string

Ya

Direktori lokal untuk mengunduh file ke.

$downloadRequestArgs

array

Tidak

Parameter permintaan objek unduhan tambahan untuk semua file.

$config

array

Tidak

Opsi konfigurasi untuk unduhan direktori. Untuk informasi selengkapnya tentang opsi konfigurasi, lihat bagian berikut.

$listeners

array

Tidak

Array TransferListener objek. SDK mengkloning masing-masing TransferListener per file.

$progressTracker

TransferListener

Tidak

Pelacak kemajuan untuk semua unduhan.

Opsi Jenis Default Deskripsi

s3_prefix

string

''

Awalan untuk pemfilteran (jika tidak dilist_objects_v2_args).

track_progress

bool

false

Apakah akan melacak kemajuan.

filter

dapat dipanggil

null

Berfungsi untuk memfilter objek S3 mana yang akan diunduh.

download_object_request_modifier

dapat dipanggil

null

Fungsi untuk menyesuaikan setiap permintaan unduhan.

list_objects_v2_args

array

[]

Argumen untuk ListObjectsV2operasi. Operasi ini mengambil metadata untuk objek yang akan diunduh.

fails_when_destination_exists

bool

false

Apakah akan gagal ketika jalur file tujuan objek sudah ada.

failure_policy

dapat dipanggil

null

Berfungsi untuk menangani kegagalan unduhan.

max_concurrency

int

100

Jumlah maksimum unduhan bersamaan.

target_part_size_bytes

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:

  1. Menghitung jalur setiap file relatif terhadap direktori sumber

  2. Menambahkan s3_prefix nilai jika ditentukan (secara otomatis menambahkan garis miring)

  3. 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:

  1. Menghapus s3_prefix dari kunci objek jika ditentukan

  2. Mengganti pembatas S3 (/) dengan pemisah direktori OS

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