Asp.net mvc 通过Post和ASP.NET MVC上传Amazon S3
我已经尝试了两天,但都没有成功,我只想简单地上传到我的AmazonS3存储桶。以下是我的呈现形式:Asp.net mvc 通过Post和ASP.NET MVC上传Amazon S3,asp.net-mvc,amazon-s3,Asp.net Mvc,Amazon S3,我已经尝试了两天,但都没有成功,我只想简单地上传到我的AmazonS3存储桶。以下是我的呈现形式: <form action="http://s3.amazonaws.com/MYBUCKETNAME" method="post" enctype="multipart/form-data"> <input type="hidden" name="AWSAccessKeyId" value="MYACCESSKEY" /> <input typ
<form action="http://s3.amazonaws.com/MYBUCKETNAME" method="post" enctype="multipart/form-data">
<input type="hidden" name="AWSAccessKeyId" value="MYACCESSKEY" />
<input type="hidden" name="acl" value="private" />
<input type="hidden" name="key" value="UserUploads/TestUser/${filename}" />
<input type="hidden" name="success_action_redirect" value="http://WWW.MYURL.COM/" />
<input type="hidden" name="policy" value="POLICY" />
<input type="hidden" name="signature" value="SIGNATURE" />
<div>
Please specify a file, or a set of files:
<input type="file" name="file" size="100" />
</div>
<input type="submit" value="Upload" />
</form>
我得到以下错误:
代码:访问被拒绝,
消息:根据策略无效:策略条件失败:[“eq”、“bucket”、“MYBUCKETNAME”]
请问有人有什么想法吗?我在抓救命稻草。也不确定我的Bucket策略和ACL是否正确。为什么不在C#中使用s3sdk执行此操作(http://aws.amazon.com/sdkfornet/),它更安全一点
以下是我的博文,内容更详细:
干杯,祝你好运。根据
匹配特定值
描述:某些字段需要与
特定值,例如匹配bucket名称或要求
对象是使用公共读取访问控制策略上载的。这个
字段值区分大小写,但名称不区分大小写
语法:有两种方法要求字段名匹配
字符串值。该值区分大小写。如果该值开始
对于美元符号($),美元符号必须用
反斜杠(\$)
(注意$prefix)
因此,如果您使用“eq”格式,则您的策略应具有$in集合。我遇到以下错误: 根据策略无效:策略条件失败:[\“eq\”,\“$bucket\”
几个小时后,我了解到不能使用大写字母的bucket。将bucket更改为小写可以解决此问题。我也在在线Amazon Post Test tool->上尝试了这些参数,得到了相同的结果。您如何生成签名?“为什么不在C中执行此操作…”因为他的上传直接进入S3,而你的上传则通过你的web服务器。正如Geoff所说,这是为了节省我网站的带宽。很好,基于浏览器的上传看起来很不错。我自己会试试。我也有同样的问题。如果你在浏览器中使用标准html表单帖子,你可以使用大写字母的bucket。但是,如果您尝试使用AmazonS3Util.postpload,它将因此错误而失败。感谢您留下此答案,它极大地帮助了我。
{
expiration = "2011-12-08T12:00:00.000Z",
conditions = [
["eq","bucket","MYBUCKETNAME"],
["eq","acl","private"],
["starts-with","$key","UserUploads/TestUser/"],
["eq","success_action_redirect", "HTTP://WWW.MYURL.COM/"]
]
}
[ "eq", "$fieldname", "S" ],