Adding Metada and Options to S3 Objects when uploading a directory

I am successfully uploading folders to S3 using ->uploadDirectory() . Several hundred folders have 100's, or 1,000's of images contained within them with so using PutObject() for each file hardly seemed to make sense. The upload works, and all goes well, but the ACL, StorageClass, and metadata is not being included in the upload.

According to the docs at http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html#uploading-a-directory-to-a-bucket , the following code should accomplished this. It is further documented with the putObject() function that is also cited.

I can find no examples of this function using anything but a directory and bucket, so fail to see what might be wrong with it. Any ideas why the data in $options is being ignored?

$aws = Aws::factory('config.php');
$s3 = $aws->get('S3');
$dir = 'c:myfoldermyfiles';
$bucket = 'mybucket;
$keyPrefix = "ABC/myfiles/";
$options = array(
    'ACL' => 'public-read',
    'StorageClass' => 'REDUCED_REDUNDANCY',
    'Metadata'=> array(
        'MyVal1'=>'Something',
        'MyVal2'=>'Something else'
    )
);

$result = $s3->uploadDirectory($dir, $bucket, $keyPrefix, $options);

Parameters to provide to putObject or createMultipartUpload should be in the params option, not provided as top-level values in the options array. Try declaring your options as follows:

$options = array(
    'params' => array(
        'ACL' => 'public-read',
        'StorageClass' => 'REDUCED_REDUNDANCY',
        'Metadata'=> array(
            'MyVal1'=>'Something',
            'MyVal2'=>'Something else',
        ),
    ),
);
链接地址: http://www.djcxy.com/p/94622.html

上一篇: Javascript,用Promises上传Array.reduce中的几个文件,怎么样?

下一篇: 上传目录时,将Metada和选项添加到S3对象