web-dev-qa-db-fra.com

PutObject dans le répertoire Amazon s3 / PHP

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é?

16
Fabrizio Fenoglio

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)
));
35
Jeremy Lindblom

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)
3
Brian Sanchez

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'
    )
        ));
0
Pawan Nagar