2013-08-21 18 views
12

hi staram oddanie nowego obiektu do wiadra z tym kodem:PHP Amazon SDK - s3 putObject i ustawić ciała

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

} 

} 

>

tak kiedyś zrobić na przykład:

?
$s3->putObject('myfilename.jpg',get_file_content("temp/image.jpg")); 

zwraca błędzie:

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 

dowolny Wskazówka ?

+0

w moim przypadku było to, bo miałem limit ** upload_max_filesize * * i ** post_max_size ** ponieważ $ source_file nie pochodzi (jest puste), serwer sprawdza $ source_file> upload_max_filesize lub post_max_size. –

Odpowiedz

27

Niestety mam poprawkę:

To było po prostu zmienić ten

'SourceFile' => $source_file, 

do

'Body' => $source_file, 
+0

Dobra robota, dzięki – Elby

+0

Cześć, proszę, pomóż mi. Przy próbie użycia tej samej funkcji uzyskuję odpowiedź 403. – ARUN

+0

Dzięki @sbaaaang, ale dlaczego? Dokumentacja mówi: http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html#uploading-a-file Wersja sdk 2 –