Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Amazon S3 pra-ditandatangani POSTs dengan Versi 3 AWS SDK for PHP
Sama seperti pra-ditandatanganiURLs, pra-ditandatangani POSTs memungkinkan Anda untuk memberikan akses tulis ke pengguna tanpa memberi mereka AWS kredensyal. POSTFormulir pra-ditandatangani dapat dibuat dengan bantuan instance PostObjectAWSS3 V4.
Contoh berikut menunjukkan cara:
-
Dapatkan data untuk formulir POST unggah Objek S3 menggunakan PostObjectV4.
Semua kode contoh untuk AWS SDK for PHP tersedia di sini GitHub
Kredensial
catatan
PostObjectV4
tidak bekerja dengan kredensyal yang bersumber dari. AWS IAM Identity Center
Sebelum menjalankan kode contoh, konfigurasikan AWS kredensyal Anda, seperti yang dijelaskan dalam. Kredensial Kemudian impor AWS SDK for PHP, seperti yang dijelaskan dalamPenggunaan dasar.
Buat PostObject V4
Untuk membuat instancePostObjectV4
, Anda harus memberikan yang berikut:
-
contoh dari
Aws\S3\S3Client
-
bucket
-
array asosiatif dari kolom masukan formulir
-
larik kondisi kebijakan (lihat Konstruksi Kebijakan di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon)
-
string waktu kedaluwarsa untuk kebijakan (opsional, satu jam secara default).
Impor
require '../vendor/autoload.php'; use Aws\S3\PostObjectV4; use Aws\S3\S3Client;
Kode Sampel
require '../vendor/autoload.php'; use Aws\S3\PostObjectV4; use Aws\S3\S3Client; $client = new S3Client([ 'profile' => 'default', 'region' => 'us-east-1', ]); $bucket = 'amzn-s3-demo-bucket10'; $starts_with = 'user/eric/'; $client->listBuckets(); // Set defaults for form input fields. $formInputs = ['acl' => 'public-read']; // Construct an array of conditions for policy. $options = [ ['acl' => 'public-read'], ['bucket' => $bucket], ['starts-with', '$key', $starts_with], ]; // Set an expiration time (optional). $expires = '+2 hours'; $postObject = new PostObjectV4( $client, $bucket, $formInputs, $options, $expires ); // Get attributes for the HTML form, for example, action, method, enctype. $formAttributes = $postObject->getFormAttributes(); // Get attributes for the HTML form values. $formInputs = $postObject->getFormInputs(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>PHP</title> </head> <body> <form action="<?php echo $formAttributes['action'] ?>" method="<?php echo $formAttributes['method'] ?>" enctype="<?php echo $formAttributes['enctype'] ?>"> <label id="key"> <input hidden type="text" name="key" value="<?php echo $starts_with ?><?php echo $formInputs['key'] ?>"/> </label> <h3>$formInputs:</h3> acl: <label id="acl"> <input readonly type="text" name="acl" value="<?php echo $formInputs['acl'] ?>"/> </label><br/> X-Amz-Credential: <label id="credential"> <input readonly type="text" name="X-Amz-Credential" value="<?php echo $formInputs['X-Amz-Credential'] ?>"/> </label><br/> X-Amz-Algorithm: <label id="algorithm"> <input readonly type="text" name="X-Amz-Algorithm" value="<?php echo $formInputs['X-Amz-Algorithm'] ?>"/> </label><br/> X-Amz-Date: <label id="date"> <input readonly type="text" name="X-Amz-Date" value="<?php echo $formInputs['X-Amz-Date'] ?>"/> </label><br/><br/><br/> Policy: <label id="policy"> <input readonly type="text" name="Policy" value="<?php echo $formInputs['Policy'] ?>"/> </label><br/> X-Amz-Signature: <label id="signature"> <input readonly type="text" name="X-Amz-Signature" value="<?php echo $formInputs['X-Amz-Signature'] ?>"/> </label><br/><br/> <h3>Choose file:</h3> <input type="file" name="file"/> <br/><br/> <h3>Upload file:</h3> <input type="submit" name="submit" value="Upload to Amazon S3"/> </form> </body> </html>