2016-01-14 189 views
0

我一直在這裏用頭撞牆,現在幾個小時了,我似乎無法弄清楚什麼是錯的。AWS 405不允許的方法

基本上我有一個S3桶,我試圖從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); 

我得到的錯誤 「上載過程中的錯誤:405不允許的方法」

我試着改變權限設置,區域設置等,但無濟於事。

我讀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#代碼的東西)的任何幫助

在此先感謝

+0

我有點困惑。你說PHP在S3,對嗎?這是否意味着你正在嘗試執行S3的PHP文件INSIDE?你的PHP服務器從哪裏運行? –

+0

是的我試圖從S3存儲桶中運行腳本。這是我第一次做PHP的東西,所以原諒我的無知,如果這不是你應該做的。 – ttsa

+0

你必須從某個地方開始! S3是一個旨在保存靜態文件的存儲服務。 PHP是一種動態的服務器端腳本語言。爲了運行PHP,你需要一個運行PHP和Web服務器的服務器(通常是初學者的Apache)。研究LAMP堆棧(Linux,Apache,MySQL和PHP)以開始瞭解從何處開始。另外谷歌'''安裝php'''甚至更多的信息。不幸的是,S3不能爲你執行代碼,所以你需要學習如何設置一個服務器來爲你做。 –

回答

0

缺省情況下,S3存儲桶被鎖定爲私有。如果要將文件放入存儲桶,您必須編輯存儲桶上的訪問策略。有關S3存儲桶策略check out the docs的信息。

+0

您的意思是右鍵單擊|屬性|權限?我添加了「每個人」,並給予完全訪問只是爲了測試,沒有幫助。 – ttsa

+0

通讀我鏈接的文檔。不允許使用405方法意味着您無權將POST發佈到該存儲桶中。當你修改權限面板的那個部分時,在底部有一個按鈕「添加桶策略」。那就是你想添加你的策略定義的地方,以允許哪些方法。所有這些都在上面鏈接的文檔中。 –