s3client - subir archivos a s3 con php
PutObject en el directorio Amazon s3/PHP (3)
Necesito cargar mis archivos dentro de directorios específicos que creé en mi almacenamiento amazon s3. Siempre subí los archivos a la "ruta absoluta" de mi grupo haciendo algo así:
$s3->putObject(array(
''Bucket'' => $bucket,
''ContentType'' => $mime,
''Key'' => $localImage,
''ACL'' => ''public-read'',
''SourceFile'' => $localImage,
''CacheControl'' => ''max-age=172800'',
"Expires" => gmdate("D, d M Y H:i:s T", strtotime("+5 years")),
''Metadata'' => array(
''profile'' => $localImage,
),
));
¿Cómo puedo definir dónde se debe cargar este archivo en un directorio determinado?
Debe incluir esa información en el parámetro "Clave". S3 no es en realidad un sistema de archivos, es más como una gran matriz asociativa (tabla hash). "Bucket" es el nombre de la tabla hash, y la "Clave" es la clave (por ejemplo, $bucket[$key] = $content
). Por lo tanto, toda la información de ruta / directorio debe ser parte de la "clave".
$localImage = ''/Users/jim/Photos/summer-vacation/DP00342654.jpg'';
$s3->putObject(array(
''Bucket'' => ''my-uniquely-named-bucket'',
''SourceFile'' => $localImage,
''Key'' => ''photos/summer/'' . basename($localImage)
));
Gracias Jeremy Lindblom, este es mi ejemplo de Python que funcionó para mí.
import boto3
s3 = boto3.resource(''s3'')
data = open(''/home/briansanchez/www/red-hat.jpg'', ''rb'')
s3.Bucket(''briansanchez'').put_object(Key=''www/red-hat.jpg'', Body=data)
Código actualizado según el último SDK de AWS: -
$result = $s3->putObject(array(
''Bucket'' => ''bucket name of S3'',
''Key'' => ''pawan-trying'',
''SourceFile'' => ''local image path or document root image path '',
''ContentType'' => ''image'',
''ACL'' => ''public-read'',
''StorageClass'' => ''REDUCED_REDUNDANCY'',
''Metadata'' => array(
''param1'' => ''value 1'',
''param2'' => ''value 2''
)
));