Вопрос по javascript – Отображение изображений в Internet Explorer и Base64

21

Чтобы упростить манипулирование различными изображениями на стороне клиента с помощью Javascript, я написал функцию на стороне сервера (в VB 2010) для преобразования файла в строку base64, которую я отправляю клиенту.

Когда я попробовал это в Internet Explorer 8.0 с 3 различными изображениями, 1 портретом и 2 пейзажами, я понял, что только портретное изображение было отображено полностью, в то время как оба пейзажных изображения были усечены (я вижу только верхнюю часть изображения).

Я думал, что у меня была ошибка в моей функции преобразования, пока я не попробовал свою локальную страницу с Firefox: каждое изображение отлично отображается Firefox.

Итак, у меня вопрос: это известная ошибка Internet Explorer? Если ответ «да», есть ли известное средство от этой известной ошибки?

Ссылка на вашу тестовую страницу? Marcel
Это хорошо известная ошибка, IE имеет ограничение на количество символов, налагаемое на все URI, что означает, что у URI схемы данных будет обрезано некоторое содержимое. Randy the Dev
В дополнение к комментариям Эндрю Данна лучше использовать файловую систему или базу данных (например, SQL 2008, который вы посвятили обслуживанию изображений). Я не думаю, что вы собираетесь приблизиться к сжатию протоколов, таких как JPG, GIF, PNG. Также я обнаружил, что использование поставщика виртуальных путей для обработки изображений из дБ намного медленнее, чем файловая система, поэтому я рекомендую переосмыслить ваш дизайн. Jeremy Thompson

Ваш Ответ

2   ответа
4

зображения в «плитках»; где каждая плитка меньше 32 КБ.

14

IE8 может создавать только изображения URI Base64 размером до 32 КБ. Это немного раздражающее ограничение, но вы все равно можете обойтись с помощью значков / и т.д. Имейте в виду, что изображения в кодировке Base64 в среднем на 33% больше данных, отправляемых по конвейеру, так что, знаете, используйте свое суждение.

Для всех, кого это интересует, также возможно заставить их работать в IE6 / 7 (без, я мог бы добавить, что ограничение в 32 КБ ...):http://venodesigns.net/2010/06/17/you-got-your-base64-in-my-css/

Это также происходит в IE 11 для меня. Я открываю изображение base64 на новой вкладке, размер которой составляет около 20 КБ, но она не будет отображаться. Длина строки составляет 27834 символа
Вы не можете заменить его чем-либо. Что вы можете сделать, это создать файл MHTML (MIME HTML). Эти файлы могут содержать MIME-типы различных объектов. Таким образом, файл MHTML может содержать файл HTML в обычной кодировке текста, а также изображения в кодировке base64, и здесь нет ограничения в 32 КБ.
спасибо за Ваш ответ. Вы имеете в виду, что кодировка base64 в моем случае бесполезна? Могу ли я просто отправить изображение в формате JPEG в виде простой строки и объявить эту строку, как я делаю для base64, просто заменив & lt; img alt = "BB" apos; SRC = & APOS; данные: изображения / JPG; base64, & Quot; .. ну чем, кстати? user1238012

Похожие вопросы