C# 不允许使用AWS 405方法
我已经用这个把头撞到墙上好几个小时了,我似乎不知道出了什么问题 基本上我有一个S3存储桶,我正试图从Unity3D上传一个简单的文本(.txt)文件到它。要下载的C#脚本和PHP脚本取自 因此,我将PHP脚本放在bucket中,获取该PHP脚本的URL并从C#代码中调用它: PHP脚本:C# 不允许使用AWS 405方法,c#,php,amazon-web-services,amazon-s3,C#,Php,Amazon Web Services,Amazon S3,我已经用这个把头撞到墙上好几个小时了,我似乎不知道出了什么问题 基本上我有一个S3存储桶,我正试图从Unity3D上传一个简单的文本(.txt)文件到它。要下载的C#脚本和PHP脚本取自 因此,我将PHP脚本放在bucket中,获取该PHP脚本的URL并从C#代码中调用它: PHP脚本: <?php if(isset($_FILES['theFile'])) { print("Success! "); print("tmpName: " . $_FILE
<?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!");
}
?>
我收到错误“上传时出错:405方法不允许”
我尝试更改权限设置、区域设置等,但没有效果
我读过,它提到要改变终点,但我似乎做不到,没有办法编辑它
如果我在不同的服务器上尝试相同的PHP/C#脚本,效果会很好。。。但不是在S3桶里
我尝试了另一个PHP/C#脚本,得到了相同的结果,在S3 bucket上出现了相同的错误,但在不同的服务器上成功了
下面是我尝试的另一个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";
}
默认情况下,S3存储桶锁定为私有。如果要将文件放入bucket,则必须编辑bucket上的访问策略。有关S3桶策略的信息。我有点困惑。你说PHP在S3中,对吗?这是否意味着您正试图在S3中执行PHP文件?您的PHP服务器从哪里运行?是的,我正在尝试从S3存储桶运行脚本。这是我第一次做PHP的东西,所以请原谅我的无知,如果这不是你应该做的。你必须从某个地方开始!S3是一种用于保存静态文件的存储服务。PHP是一种动态服务器端脚本语言。为了运行PHP,您需要一个运行PHP的服务器和一个Web服务器(通常是初学者使用的Apache)。查看LAMP堆栈(Linux、Apache、MySQL和PHP),开始了解从哪里开始。还有谷歌
安装php
,了解更多信息。不幸的是,S3不能为您执行代码,所以您需要学习如何设置服务器来为您执行。谢谢您的提示。是否有其他方法(除了设置php)可以从存储服务(如S3)下载文件(通过代码)?从下载?还是上传到?你的问题是关于上传,而不是下载。你是说右键单击|属性|权限?我添加了“每个人”并提供了测试的完全访问权限,但没有帮助。请通读我链接的文档。405方法不允许意味着您没有权限发布到该bucket中。当您修改权限面板的该部分时,底部有一个按钮,上面写着addbucket policy
。这就是您希望为允许的方法添加策略定义的地方。所有这些都在上面链接的文档中。
<?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";
}