Подтвердить что ты не робот

Как обойти ограничение IE8 32k на данные: uri на base64 encode?

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

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

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

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

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

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

4b9b3361

Ответ 1

В итоге мы сбросили поддержку IE8.

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

В Rails-представлениях: (поддерживается все браузеры)

<b><%= image_tag @chart+".png" %></b>