我正在尝试使用此代码将新对象放入存储桶中:
<?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
));
}
}
&GT;
所以我曾做过例如:
$s3->putObject('myfilename.jpg',get_file_content("temp/image.jpg"));
它返回错误:
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
任何线索?
答案 0 :(得分:27)
抱歉,我得到了修复:
只是改变了这个
'SourceFile' => $source_file,
到
'Body' => $source_file,