Можно ли иметь HTML-код и все изображения в одном файле? - PullRequest
3 голосов
/ 31 августа 2010

Я хочу иметь HTML-файл с JavaScript.Тогда я хочу иметь несколько изображений в этом файле.Я хочу отправить этот HTML-файл своим друзьям (по электронной почте).Я хочу, чтобы они видели мой HTML-файл с изображениями, но я не хочу отправлять им все файлы со всеми изображениями.Было бы неплохо отправить им только один файл.

Я также не хочу, чтобы изображения были на веб-сервере.

Я также не хочу отправлять им архив со всеми файлами (поскольку тогда им нужно открыть этот архив).

Хочу ли я многого или можно делать то, что я хочу?

ДОБАВЛЕНО

Я не хочу, чтобы мои друзья видели HTMLфайл в почтовом клиенте.Я хочу отправить файл в виде вложения.Таким образом, они могут сохранить его и затем открыть с помощью браузера.

Ответы [ 7 ]

5 голосов
/ 31 августа 2010

Да, это возможно:

# HTML
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA................." />

# CSS
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA.................)

Источник файла кодируется с использованием алгоритма Base64 , который позволяет легко представлять двоичные данные в виде обычного текста.

Узнайте больше на википедии: Схема URI данных .

3 голосов
/ 31 августа 2010

В зависимости от того, поддерживает ли его почтовый клиент, теоретически вы можете использовать схему URI данных , например:

<img src="data:image/png;base64,
    iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
    C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
    AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
    REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
    ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
    vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />

Опять же, поддержка зависит от почтового клиента.Некоторые могут вообще не поддерживать это.Некоторые могут усечь после X байтов.Etcetera.Насколько я знаю, их не так много.Кроме того, я не вижу других способов встроить изображения в HTML, как это.До тех пор, пока поддержка не получит широкого распространения, лучше всего отправлять изображения вместе с прикрепленными файлами.


Обновление согласно обновлению OP: ну, большинство современных веб-браузеров поддерживаетЭто.Вышеупомянутая ссылка на Википедию даже упоминает их подробно.

URI данных в настоящее время поддерживаются следующими веб-браузерами:

  • На основе Gecko , такими как Firefox, XeroBank, Camino, Fennec и K-Meleon
  • Konqueror через подчиненную систему ввода / вывода KIO KIO
  • Opera (включая такие устройства, как Nintendo DSi или Wii)
  • на основе WebKit , например, Safari (в том числе на iPhone), браузер Android, Epiphany и Midori (WebKit является производным от движка Konqueror KHTML, но Mac OS X не разделяет архитектуру KIO, поэтомуреализации различны), а также на основе Webkit / Chromium, таких как Chrome и Iron
  • Internet Explorer 8 : Microsoft ограничила свою поддержку определенным «не навигационным» контентом длясоображения безопасности, включая опасения, что JavaScript, встроенный в URI данных, может не интерпретироваться фильтрами сценариев, такими как те, которые используются почтовыми веб-клиентами. URI данных должны быть меньше 32 КиБ.

Обратите внимание, что IE8 усекает строку после 32 КБ.Таким образом, пока изображения не такие большие, вы можете использовать схему URI данных для пользователей IE8.Это не поддерживается в IE7 и ниже.

0 голосов
/ 31 августа 2010

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

0 голосов
/ 31 августа 2010

Почему бы вам просто не связать изображения с относительными путями, не связать их в папку с html-файлом и не отправить его в архив и не сжать (zip или tarball, в зависимости от предпочтений)?

0 голосов
/ 31 августа 2010

Вы ни при каких обстоятельствах не должны отправлять электронные письма, текст которых HTML.Отправляйте обычные текстовые сообщения с изображениями в виде вложений MIME или, что еще лучше, разместите изображения на веб-сайте (я слышал, Flickr довольно хорош ;-) и отправьте им URL-адреса.

Я собираюсь повторить, потому что это нужно говорить чаще: электронная почта должна быть простым текстом.

0 голосов
/ 31 августа 2010

Вы не можете выполнить JavaScript из почтового клиента.Вы можете встроить изображения, но вам понадобится библиотека, потому что делать это вручную нетривиально.

Вам просто нужно отправить им ссылку.

0 голосов
/ 31 августа 2010

Я не знаю, как выполнить то, что вам нужно, со 100% уверенностью, что это сработает.

Есть ли способ отказаться от изображений?Возможно, представление ascii вместо этого?(что-то вроде этого http://www.text -image.com / )

Архив будет единственным вариантом «одного файла», о котором я знаю.

...