Как обойти ограничение IE8 32k для данных: URI на Base64 кодировать? - PullRequest
20 голосов
/ 27 августа 2010

Мне нужно отправить html-ответ в браузер, содержащий 1920x1080 png.Это снимок экрана, сделанный html-запросом.

Я кодирую изображение в base64 и отправляю его в виде text / html-содержимого.Что-то простое, например:

<HTML><HEAD>Whatever</HEAD><BODY><img src="data:image/png;base64,data"/></BODY></HTML>

Отлично работает на FF и Chrome, проблема в том, что мне нужно поддерживать IE8.IE8 как ограничение на длину данных: uri.

Если я сожму изображение так, чтобы кодировка png была меньше 32k (около 600x500), я потерял бы слишком много информации.

Что было бысамый простой способ обойти эту проблему?(У меня нет доступа к серверу для размещения образа или тому подобное)

Ответы [ 4 ]

17 голосов
/ 30 августа 2010

В конце концов мы отказались от поддержки IE8.

Мне повезло, что это только для внутренней отладки.

Проблема все еще остается.Надеюсь, в IE9 не будет данных: ограничение uri.

4 голосов
/ 27 августа 2010

Вы всегда можете разбить изображение на 4 (или больше) и кодировать каждый раздел отдельно.

0 голосов
/ 14 апреля 2014

URI данных в кодировке Base64 работает нормально в IE, версия которого больше или равна 9. Так как для IE 9 нет ограничений URI данных. Также я попытался исправить эту проблему IE 8.Но я не смог решить эту проблему.Чтобы обойти это, храните изображения где-то внутри вашего приложения и извлекайте их из приложения при каждом его отображении.

В представлениях Rails: (поддерживает, если IE> = 9)

<b><%= ('&lt;img src="data:image/jpg;base64,%s">' % Base64.encode64(@chart.to_blob)).html_safe %></b>

В Railsviews: (поддерживает все браузеры)

<b><%= image_tag @chart+".png" %></b>
0 голосов
/ 27 августа 2010

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

...