Вздох, мы вернемся к этому. Я могу с легкостью использовать CORS на любом достаточно приличном браузере, чтобы напрямую загружать файлы в мой ковш AWS S3. Но (он шел), с IE я должен вернуться к iframes. Легко, настройте скрытый iframe, создайте форму, установите ее цель в iframe name/id, submit form. Если загрузка выполнена успешно, Iframe перенаправляется на указанный мной URL-адрес, и я могу получить доступ к тому, что мне нужно. Но если возникает ошибка, так как Iframe теперь находится в домене AWS, у меня не будет доступа к содержимому XML ошибки. Infact, я даже не знаю, что произошла ошибка.
Я видел, как храбрые люди в Интернете говорят о размещении html файла в том же ведре, в который должны быть загружены файлы, а затем с помощью postMessages маршрутизировать контент Iframe или что-то в этом роде.
Может ли кто-нибудь объяснить мне, как достичь этого мифического решения? Похоже, что загрузчик файлов jQuery от Blueimp решает это, но, по словам Бога, код настолько jQueryified, что я не смог получить его суть.
Редактирование для ясности
- IE < 10 не имеет API FileReader.
- Из-за 1 я не могу использовать XDomainRequest для отправки файла на S3
- Итак, используйте iframe и отправьте его вместе с полной формой на S3
- В случае успеха AWS перенаправляет страницу на сервер, которая читает заголовки и затем возвращает ответ стиля JSONP, который может быть прочитан скриптами на клиенте (страница перенаправления может указывается мной).
- Если при ошибке все, что я могу сделать прямо сейчас, это ждать истечения времени ожидания, а затем консольного журнала
идентификатор IFRAME и всплывающее предупреждение, чтобы пользователь мог запросить идентификатор iframe по ID,
прочитайте XML-контент DAMN, определите ошибку AWS, а затем повторите попытку (я саркастичен..)