2016-01-21 3 views
0

Я успешно протестировал загрузку на локальный сервер с использованием традиционного PHP. Однако у меня проблема с загрузкой на Amazon s3.Не удалось подписаться на документ с помощью Fineuploader, чтобы сделать загрузку amazon s3

Я написал php, используя примеры git в качестве ссылки. Пожалуйста, скажите мне, что я делаю неправильно. Все ссылки на скрипты находятся в правильном месте в моей локальной системе, и я также не делаю никаких запросов CORS.

Вот конкретные кодовые разделы:

// UI Instance

var s3uploader = new qq.s3.FineUploader({ 

request: { 
endpoint: "bucket.s3.amazonaws.com", 
accessKey: "given key" 
}, 
signature: { 
endpoint: "endpoint.php" 
}, 
uploadSucess: { 
endpoint: "endpoint.php?success" 
}, 
}); 

В endpoint.php я присвоенный clientPrivateKey, bucketName и Hostname и я предполагаю, что остальные вещи лучше оставить нетронутым. (В том числе файл composer.json)

Ошибки:
1.Error пытаются разобрать подпись
2.Recieved пустой или неверный ответ сервера
3.Policy подписание не удалось

Далее: Are политики документы, которые должны быть написаны сами по себе? Как узнать, поддерживает ли мой ковш только подпись версии 4?

ответ

1

Вы должны включить включать значения для следующих переменных:

  • $ clientPrivateKey = $ _ENV [ 'AWS_CLIENT_SECRET_KEY'];
  • $ serverPublicKey = $ _ENV ['AWS_SERVER_PUBLIC_KEY'];
  • $ serverPrivateKey = $ _ENV ['AWS_SERVER_PRIVATE_KEY'];
  • $ expectedBucketName = $ _ENV ['S3_BUCKET_NAME'];

Кроме того, если Вы используете v4 подписи, вы должны также включать в себя значение:

  • $ expectedHostName = $ _ENV [ 'S3_HOST_NAME'];

Если вы видите ошибки подписи, то либо вы не установили все эти значения, либо были неверны клавиши AWS.

Что касается других ваших двух вопросов:

ли политические документы должны быть авторством явно сами?

No, Fine Uploader S3 создает их. Обратите внимание, что в документах политики есть только , используемый для не-канальных загрузок. Для пакетных загрузок используется API загрузки многостраничных файлов S3, и вместо этого сервер подписи запрашивает подписать строку идентификационных заголовков.

Как узнать, поддерживает ли мой ковш только подпись версии 4?

http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

+0

я непосредственно использовать ключи в коде. Установка переменных пользовательской среды и повторение их с помощью $ _ENV или getenv() отображается пустым. Однако, поскольку я не использую функцию удаления, я понимаю, что для этого не требуются общедоступные и общедоступные ключи сервера. Когда я тестирую свою локальную машину, каково должно быть ожидаемое имя хоста? –

+0

имя хоста ведро S3 –

+0

После выполнения всего, дважды проверяя ключи учетных данных aws, я получаю ту же ошибку. Могу ли я отправить вам код для быстрого просмотра? –