2013-08-21 17 views
12

Ciao Sto cercando di mettere un nuovo oggetto in un secchio con questo codice:PHP Amazon SDK - s3 putObject e impostare corpo

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

} 

} 

>

così una volta che faccio per esempio:

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

restituisce errore:

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 

qualsiasi traccia ?

+0

Nel mio caso è stato perché ho avuto un limite ** upload_max_filesize * * e ** post_max_size ** perché $ source_file non viene (è null), il server convalida $ source_file> upload_max_filesize o post_max_size. –

risposta

27

Spiacente ho ottenuto la correzione:

era solo per cambiare questa

'SourceFile' => $source_file, 

a

'Body' => $source_file, 
+0

Buon lavoro, grazie – Elby

+0

Ciao, potresti aiutarmi per favore. Quando provo ad usare la stessa funzione, ottengo una risposta 403. – ARUN

+0

Grazie a @sbaaaang, ma perché? La documentazione dice http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html#uploading-a-file Version sdk 2 –