Je dois télécharger mes fichiers dans des répertoires spécifiques que j'ai créés sur mon stockage Amazon s3. Je télécharge toujours les fichiers sur le "chemin absolu" de mon compartiment en effectuant quelque chose comme ceci:
$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,
),
));
Comment puis-je définir où ce fichier doit être téléchargé sur un répertoire donné?
Vous devez inclure cette information dans le paramètre "Key". S3 n'est pas réellement un système de fichiers, mais plutôt un grand tableau associatif (table de hachage). "Bucket" est le nom de la table de hachage et la "Key" est la clé (par exemple, $bucket[$key] = $content
). Ainsi, toutes les informations de chemin/répertoire doivent faire partie de la "clé".
$localImage = '/Users/jim/Photos/summer-vacation/DP00342654.jpg';
$s3->putObject(array(
'Bucket' => 'my-uniquely-named-bucket',
'SourceFile' => $localImage,
'Key' => 'photos/summer/' . basename($localImage)
));
merci Jeremy Lindblom, ceci est mon exemple de python qui a fonctionné pour moi.
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)
Code mis à jour selon le dernier SDK d’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'
)
));