Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 通过Post和ASP.NET MVC上传Amazon S3_Asp.net Mvc_Amazon S3 - Fatal编程技术网

Asp.net mvc 通过Post和ASP.NET MVC上传Amazon S3

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

我已经尝试了两天,但都没有成功,我只想简单地上传到我的AmazonS3存储桶。以下是我的呈现形式:

    <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" ],