2009-09-06 6 views
2

Je dois télécharger une image donnée à l'aide Amazon S3Télécharger l'image en utilisant Amazon S3

J'ai ce PHP:

<? 
$uploaddir = 'images/'; 
$file = basename($_FILES['userfile']['name']); 
$uploadfile = $uploaddir . $file; 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    echo "Data Uploaded Successfully"; 
} else { 
    echo "ERROR"; 
} 
?> 

mais il me donne cette erreur:

<?xml version="1.0" encoding="UTF-8" ?> 
<Error> 
    <Code>MethodNotAllowe</Code> 
    <Message>The specified method is not allowed against this resource.</Message> 
    <ResourceType>OBJECT</ResourceType> 
    <Method>POST</Method> 
    .... 
    <AllowedMethod>PUT</AllowedMethod> 
    .... 
</Error> 

Comment Je télécharge un fichier?

Répondre

6

Vous utilisez la méthode POST (qui est par défaut PHP) pour soumettre les données. La plupart des applications Web diffèrent entre les verbes GET, PUT et POST (voir W3 RFC on Verbs).

S3 veut que vous utilisiez <AllowedMethod>PUT</AllowedMethod> comme méthode. move_uploaded_file n'est pas capable de le faire. Avant de commencer à écrire du code pour faire des requêtes PUT, vous devriez peut-être jeter un coup d'œil à quelques PHP S3 libs.

5

Faites un essai chez Zend Framework, il y a une super classe (Zend_Service_Amazon_S3) pour gérer tous vos tracas S3.

http://framework.zend.com

require_once 'Zend/Service/Amazon/S3.php'; 
$s3 = new Zend_Service_Amazon_S3($my_aws_key, $my_aws_secret_key); 
$s3->createBucket("my-own-bucket"); 
$s3->putObject("my-own-bucket/myobject", $file); 
Questions connexes