Скачать файл с помощью ajax и webservice - PullRequest
1 голос
/ 11 апреля 2010

Есть этот сторонний веб-сервис.Одним из общедоступных веб-методов является метод GetDocument ().Этот метод возвращает объект Document.Объект Document имеет свойства для File (byte []), ContentType (string) и т. Д.

Мой вопрос: можно ли подписаться на эту службу, используя javascript (mootools) + ajax + JSON, вернуть объект документа вв этом случае документ Excel и принудительно загрузить файл?

1 Ответ

2 голосов
/ 11 апреля 2010

Это правда, что обычно вы не можете начать загрузку из JavaScript, но есть флэш-компонент, Downloadify , который позволяет генерировать файлы на стороне клиента.

Таким образом, вы можете обслуживать файлы для загрузки из HTML / JavaScript.

После решения этой проблемы у вас все еще остается проблема получения данных, которые вы хотите обслуживать, из исходного веб-сервиса.

Сторонний разработчик подразумевает XSS (межсайтовый скриптинг), который запрещен при использовании XmlHttpRequest (Ajax).

Возможное решение этой проблемы может заключаться в использовании общей скрытой техники IFrame для получения данных.

Просто имейте соответствующую (скрытую?) Форму, которая правильно отправляет сообщения в веб-сервис и указывает action на скрытый элемент IFrame, для которого вы перехватываете событие Load и анализируете возвращаемые данные.

Но современные браузеры имеют разные уровни мер безопасности, которые ограничивают вашу возможность доступа к IFrames из внешнего источника, поэтому вы действительно застряли здесь. Извините, что оправдала ваши надежды.

Единственный практичный надежный способ выполнить то, что вы хотели бы сделать, - это иметь локальный серверный скрипт, который может действовать как прокси между вашим HTML / JavaScript и внешним веб-сервисом.

Используя такой прокси, вы можете просто вернуться к использованию Ajax, чтобы ваши данные обрабатывались с помощью Downloadify.

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

Это только мои наблюдения по проблемной области, которую вы представляете.

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