PutObject into directory Amazon s3 / PHP

2022-08-30 19:39:12

我需要将文件上传到我在 Amazon s3 存储上创建的特定目录中。我总是在存储桶的“绝对路径”上上传文件,如下所示:

$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,
            ),
        )); 

如何定义此文件应上传到给定目录上的位置?


答案 1

您必须在“Key”参数中包含该信息。S3实际上不是一个文件系统,它更像是一个大的(哈希表)关联数组。“存储桶”是哈希表的名称,“键”是键(例如,)。因此,所有路径/目录信息都必须是“键”的一部分。$bucket[$key] = $content

$localImage = '/Users/jim/Photos/summer-vacation/DP00342654.jpg';
$s3->putObject(array(
    'Bucket'     => 'my-uniquely-named-bucket',
    'SourceFile' => $localImage,
    'Key'        => 'photos/summer/' . basename($localImage)
));

答案 2

谢谢Jeremy Lindblom,这是我的python示例,对我有用。

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)

推荐