hi i'm trying putting a new object into a bucket with this code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(FCPATH.'s3/aws-autoloader.php');
use Aws\S3\S3Client;
class s3{
public $_secret_key ="********";
public $_access_key = "********";
public $_bucket = "tphotos-dev";
function connect(){
return S3Client::factory(array(
'key' => $this->_access_key,
'secret' => $this->_secret_key,
));
}
function deleteObject($prefix = false){
if($prefix){
$s3 = $this->connect();
return $s3->deleteMatchingObjects($this->_bucket, $prefix);
}
}
function putObject($file_name,$source_file){
$s3 = $this->connect();
$s3->putObject(array(
'Bucket' => (string)$this->_bucket,
'Key' => $file_name,
'SourceFile' => $source_file,
'ACL' => 'public-read',
));
return $s3->waitUntilObjectExists(array(
'Bucket' => $this->_bucket,
'Key' => $file_name
));
}
}
?>
so once i do for example:
$s3->putObject('myfilename.jpg',get_file_content("temp/image.jpg"));
it returns error:
Fatal error: Uncaught exception 'Aws\Common\Exception\InvalidArgumentException' with message 'You must specify a non-null value for the Body or SourceFile parameters.' in /Users/ok/Projects/s3/Aws/Common/Client/UploadBodyListener.php:91
any clue ?
Sorry i got the fix:
it was just to change this
'SourceFile' => $source_file,
to
'Body' => $source_file,