загрузить и отобразить изображение PNG (не base64), требующее базовой аутентификации в JavaScript - PullRequest
1 голос
/ 16 ноября 2010

Я так застрял на этом.Мне нужно получить изображение, например http://ip:port/icon_contact.png, используя JavaScript с другого сервера, требующего базовой аутентификации.Сервер не может дать base64.Не беспокойтесь об ограничении x-домена.заранее спасибо, louenas

1 Ответ

1 голос
/ 16 ноября 2010

Если я правильно читаю ваш вопрос - который ни в коем случае не уверен - вы хотите получить двоичные данные файла изображения, предоставляющего основную информацию для аутентификации напрямую (не через пользователя).

Вам следуетбыть в состоянии сделать это с помощью объекта XMLHttpRequest (вы можете предоставить информацию об аутентификации в вызове open), но для чтения двоичных данных из ответа я вполне уверен, что вам придется перейти на совершенно новый и /или специфичные для реализации вещи.Вот ссылки на документы MSDN , MDC и (довольно новые) W3C .XMLHttpRequest у Microsoft responseBody, у Mozilla (Firefox) mozResponseArrayBuffer, и я считаю, что в документах W3C обсуждаются двоичные данные здесь .

К отобразить изображение, загрузив его с помощью вышеупомянутого, вы можете преобразовать двоичные данные в URL данных (точнее, «URI данных», но никто не говорит, что) и присвойте результат тегу img src.Вы должны были бы преобразовать любой бинарный код браузера в base64 кодировку (для URL-адреса данных). (Вам, вероятно, не нужно писать конверсию самостоятельно, быстрый поиск показывает, что люди занимались этой проблемой, и вы можете повторно [и, возможно, внести свой вклад в] их усилия ...)

Плохая новость заключается в том, что IE поддерживает только URI данных, начиная с IE8, и ограничивает их 32 КБ, поэтому вам придется использовать изящные методы нарезки, такие как Google делает для предварительного просмотра .

Если у вас есть строка data://, тег img будет простым.Если вы не используете библиотеку:

var img, element;

img = document.createElement('img');
img.src = /* ... the data URI ... */
element = /* ... find the element you want to put the image in, via
                 document.getElementById or document.getElementsByTagName
                 or other DOM traversal ... */;
element.appendChild(img);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...