我一直在這裏用頭撞牆,現在幾個小時了,我似乎無法弄清楚什麼是錯的。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#代碼的東西)的任何幫助
在此先感謝
我有點困惑。你說PHP在S3,對嗎?這是否意味着你正在嘗試執行S3的PHP文件INSIDE?你的PHP服務器從哪裏運行? –
是的我試圖從S3存儲桶中運行腳本。這是我第一次做PHP的東西,所以原諒我的無知,如果這不是你應該做的。 – ttsa
你必須從某個地方開始! S3是一個旨在保存靜態文件的存儲服務。 PHP是一種動態的服務器端腳本語言。爲了運行PHP,你需要一個運行PHP和Web服務器的服務器(通常是初學者的Apache)。研究LAMP堆棧(Linux,Apache,MySQL和PHP)以開始瞭解從何處開始。另外谷歌'''安裝php'''甚至更多的信息。不幸的是,S3不能爲你執行代碼,所以你需要學習如何設置一個服務器來爲你做。 –