web-dev-qa-db-ja.com

Amazon s3ディレクトリにPutObject / PHP

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

このファイルを特定のディレクトリにアップロードする場所を定義するにはどうすればよいですか?

17

その情報を「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)
));
41
Jeremy Lindblom

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

AWSの最新SDKに従って更新されたコード:-

$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