不允许使用AWS 405方法

时间:2016-01-14 21:05:01

标签: c# php amazon-web-services amazon-s3

我现在已经用头撞了一下墙几个小时了,我似乎无法弄清楚是什么问题。

基本上我有一个S3 Bucket,我试图从Unity3D上传一个简单的文本(.txt)文件。要下载的C#脚本和PHP脚本取自here

所以我把PHP脚本放在桶本身,获取该php脚本的URL并从C#代码中调用它:

PHP脚本:

<?php
   if(isset($_FILES['theFile']))
   {
      print("Success! ");
      print("tmpName: " . $_FILES['theFile']['tmp_name'] . " ");
      print("size: " . $_FILES['theFile']['size'] . " ");
      print("mime: " . $_FILES['theFile']['type'] . " ");
      print("name: " . $_FILES['theFile']['name'] . " ");


   move_uploaded_file($_FILES['theFile']['tmp_name'], "../images/" . $_FILES['theFile']['name']);

   } else
   {
      print("Failed!");
   }
?>

C#:

 WWWForm postForm = new WWWForm();
 postForm.AddBinaryData("theFile", bytes, "TestFile", "text/plain");
 WWW upload = new WWW(phpScriptURL, postForm);        
 yield return upload;
 if (upload.error == null)
     Debug.Log("upload done :" + upload.text);
 else
     Debug.Log("Error during upload: " + upload.error);

我收到错误&#34;上传时出错:405方法不允许&#34;

我尝试更改权限设置,区域设置等但无济于事。

我看了this answer并提到要改变终点,但我似乎无法做到这一点,无法编辑它。

如果我在不同的服务器上尝试相同的PHP / C#脚本,它可以正常运行......但不是在S3 Bucket中。

我已经尝试了另一个PHP / C#脚本并获得了相同的结果,S3存储桶上的错误相同,但在另一台服务器上获得了成功。

这是我尝试过的另一个PHP脚本:

<?php
$data = file_get_contents('php://input');
try {
    $result = file_put_contents("save-bytes.txt", $data, FILE_APPEND);
} catch (Exception $e) {
    echo $e->getMessage();
    die();
}
if ($result !== false)
{
    echo "Saved " . $result . " bytes";
} else {
    echo "Data is not saved";
}

(此脚本使用的C#代码与之前发布的C#代码类似)

感谢您提前提供任何帮助

1 个答案:

答案 0 :(得分:0)

默认情况下,S3存储桶被锁定为私有。如果要将文件放入其中,则必须编辑存储桶上的访问策略。有关S3存储桶策略的信息check out the docs