我需要使用Amazon S3上传给定的图片
我有这个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";
}
?>
但它给了我这个错误:
<?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>
如何上传文件?
答案 0 :(得分:6)
您正在使用POST
方法(PHP默认值)来提交数据。大多数网络应用程序在动词GET
,PUT
和POST
之间存在差异(请参阅W3 RFC on Verbs)。
S3希望您使用<AllowedMethod>PUT</AllowedMethod>
作为方法。 move_uploaded_file无法做到这一点。在开始编写用于执行PUT请求的代码之前,您可能应该查看一些PHP S3 libs。
答案 1 :(得分:5)
试试Zend Framework,有一个很棒的类(Zend_Service_Amazon_S3)来处理你所有的S3麻烦。
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);