Как сохранить блок подписи, включая форматирование, в таблице сервера Sql? - PullRequest
2 голосов
/ 29 июля 2010

Мне было поручено создать таблицу, в которой будет храниться подпись электронной почты для каждого имени пользователя. Вопрос в том, как хранить блок подписи? Я мог бы использовать обычный тип varchar, но как мне сохранить метаданные форматирования?

Любые идеи или предложения приветствуются. Спасибо!

Ответы [ 5 ]

1 голос
/ 31 июля 2010

У меня была еще одна идея, что вы можете создать специальный шаблон подписи электронной почты, а затем позволить людям указывать поля, такие как «Имя пользователя», «Цитата», «Аватар», «Выравнивание» и т. Д., А затем предлагать им изменить свою подпись в «редакторе подписи». Таким образом, вы можете просто хранить «данные», а не рендеринг. чтобы вы могли хранить что-то вроде следующего:

<signature>
    <username>chama</username>
    <avatar href="http://url to my image"/>
    <quote>A bird in the hand is not in the nest</quote>
</signature>

и это может выглядеть примерно так:


image Чама
Птица в руке не в гнезде
0 голосов
/ 29 июля 2010

используйте varchar (max) или любое другое ограничение длины.

в противном случае единственная реальная проблема заключается в том, что вы можете убедиться, что html закодирован в формате html, прежде чем помещать его в базу данных. (т.е. замените < на &lt; и т. д.) Не уверен, что вы используете, но некоторые инструменты имеют настройку, поэтому вам не нужно делать это вручную.

другие вещи, которые вы можете делать помимо / в дополнение к html-кодированию

1) ограничить теги форматирования некоторым заранее заданным набором (т. Е. Тегами поиска / замены, которые вам не нужны, прежде чем выполнять вставку. Вы можете управлять этим в хранимой процедуре БД, или, что еще лучше, в вашей конец (если у вас есть контроль над этим).

2) дисквалифицировать попытки вставить данные, если они содержат определенные теги (например, '<script>' и т. Д.)

0 голосов
/ 29 июля 2010

Я бы предложил пойти с вашей первоначальной мыслью - varchar(max).Это позволит вам хранить подписи на основе ASCII.Это включает в себя текстовые подписи, подписи в формате RTF или HTML.

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

0 голосов
/ 29 июля 2010

Исходя из того, что я нахожу, у вас есть два основных варианта:

1) Преобразуйте отформатированные данные подписи в двоичный файл и сохраните его как BLOB-объект.
2) Вместо сохранения самой подписи в БД, сохраните их как файлы где-нибудь и сохраните ссылку на это местоположение файла в БД.

0 голосов
/ 29 июля 2010

HTML, RTF, XML. Стандартные варианты множественные.

Примечание: «подпись электронной почты» НЕ является «цифровой подписью». Термин «цифровая подпись» имеет особое значение и означает ПОДПИСЬ, чтобы убедиться, что - для электронной почты - она ​​исходит от реального отправителя и не была подделана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...