2014-01-16 2 views
1

Я разрабатываю новый сайт, на котором пользователи могут загружать файлы в ведро Amazon S3. После оценки различных библиотек загрузки для jQuery я, наконец, выбрал Dropzone JS.Как получить заголовки ответов Amazon S3 с использованием Dropzone JS?

Мне удалось интегрировать Dropzone в мое приложение, чтобы загружать файлы непосредственно в ведро Amazon S3. Все работает нормально с загрузкой.

Однако у меня возникают проблемы с чтением ответа от Amazon с использованием jQuery. В частности, я хотел бы получить заголовок Location, который приходит как ответ от Amazon. Этот заголовок местоположения содержит информацию, необходимую для обработки загруженного файла, но я не могу получить его с помощью Dropzone. Кто-нибудь может посоветовать, как получить заголовки ответов XHR? Проверяя код, я не думаю, что это возможно, кажется, что мы можем получить только текст ответа, но не заголовки.

ответ

2

см. How to get read data from response header in jquery/javascript для получения информации об ответе.

Предполагая, что вы используете операцию AWS POST http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html

Я подозреваю, что URI возвращает это один с доменом Амазонка: https://s3.amazonaws.com/Bucket/Object

, если вы используете «веб» ведро и хотите использовать свой пользовательский домен, вам придется это выяснить самостоятельно. У вас уже есть имя ведра, поскольку вы предоставили его в вызове.

Еще одна морщина может быть разрешением файла после загрузки. Обязательно установите политику для путей для загрузки соответствующим образом.

0

Согласно создателю dropzone, объект XHR хранится в самом файле как file.xhr. Поэтому, если вы хотите получить доступ к своим параметрам, вам нужно будет сделать console.log(file.xhr."what you want to access")

Предлагаю вам console.log(file.xhr), чтобы увидеть его содержимое первым. Это даст вам представление о доступных значениях.

Однако заголовки ответов "unsafe" и не могут быть просмотрены, за исключением того, что вы добавляете политику CORS в свое ведро, которое маркирует их как безопасные.

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

<ExposeHeader>location</ExposeHeader>

к политике CORS. Тогда вы можете получить доступ к нему, как так

console.log(file.xhr.getResponseHeader("Location"));

К сожалению воскресить старую нить

Смежные вопросы