Загрузка Amazon S3 через почту и ASP.NET MVC - PullRequest
4 голосов
/ 07 декабря 2011

Я тщетно пытался в течение 2 дней сделать простую загрузку в мой Amazon S3 Bucket.Ниже представлена ​​моя форма:

    <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>

, и мой документ политики выглядит следующим образом:

    {
        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/"]
            ]
    }

Я получаю следующую ошибку: Код: AccessDenied, Сообщение: Неверно в соответствии с политикой: ПолитикаУсловие не выполнено: ["eq", "bucket", "MYBUCKETNAME"]

У кого-нибудь есть идеи, пожалуйста, я здесь хватаюсь за соломинку.Также не уверен, правильно ли указаны мои Bucket Policy и ACL.

Ответы [ 3 ]

4 голосов
/ 16 декабря 2011

Согласно http://doc.s3.amazonaws.com/proposals/post.html#Access_Control

Соответствует определенному значению

Описание: Есть определенные поля, которые вы хотите сопоставить конкретное значение, такое как сопоставление имени сегмента или требование, чтобы объект загружен с использованием общедоступной политики контроля доступа. значение поля чувствительно к регистру, но имя не.

Синтаксис: есть два способа требовать, чтобы имя поля совпадало строковое значение. Значение чувствительно к регистру. Если значение начинается со знаком доллара ($), знак доллара должен быть экранирован обратная косая черта (\ $)

[ "eq", "$fieldname", "S" ],

(обратите внимание на префикс $).

Таким образом, ваша политика должна содержать $ в наборах, где вы используете формат "eq"

2 голосов
/ 07 декабря 2011

Почему бы не сделать это в C # с S3 SDK (http://aws.amazon.com/sdkfornet/), это немного более безопасно.

Вот мой блог с более подробной информацией: http://bradoyler.com/post/3614362044/uploading-an-image-with-aws-sdk-for-net-c.

Ура и удачи.

1 голос
/ 07 июня 2013

Я получил следующую ошибку: Недопустимо в соответствии с политикой: условие политики не выполнено: [\ "eq \", \ "$ bucket \"

Через много часов я узнал, что вы не можете иметьведро с заглавными буквами.Смена ведра в нижний регистр исправила его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...