Amazon S3 prefirmado POSTs con la AWS SDK for PHP versión 3 - AWS SDK for PHP

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Amazon S3 prefirmado POSTs con la AWS SDK for PHP versión 3

Al igual que los prefirmadosURLs, los prefirmados POSTs permiten conceder acceso de escritura a un usuario sin necesidad de darle credenciales. AWS Los POST formularios prefirmados se pueden crear con la ayuda de una instancia de AWSS3 V4. PostObject

Los siguientes ejemplos muestran cómo:

Todo el código de ejemplo del AWS SDK for PHP está disponible aquí en GitHub.

Credenciales

nota

PostObjectV4 no funciona con credenciales procedentes de AWS IAM Identity Center.

Antes de ejecutar el código de ejemplo, configure sus AWS credenciales, tal y como se describe enCredenciales. A continuación, importe las AWS SDK for PHP, tal y como se describe enUso básico.

Cree la PostObject V4

Para crear una instancia de PostObjectV4, debe proporcionar lo siguiente:

  • Instancia de Aws\S3\S3Client

  • bucket

  • matriz asociativa de campos de entrada de formularios

  • conjunto de condiciones de política (consulte Construcción de políticas en la Guía del usuario de Amazon Simple Storage Service)

  • cadena de fecha de vencimiento para la política (opcional, una hora de forma predeterminada).

Importaciones

require '../vendor/autoload.php'; use Aws\S3\PostObjectV4; use Aws\S3\S3Client;

Código de muestra

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>