|
|
|
Сохранение картинки в XML | ☑ | ||
|---|---|---|---|---|
|
0
StKnight217
11.12.15
✎
09:20
|
Всем привет! Описание проблемы:
С помощью процедуры НачатьПомещениеФайла, указываю путь до картинки. Передаваемое оповещение вызывает функцию ОбработкаВыбораФайла: Процедура ОбработкаВыбораФайла(Результат,Адрес,ВыбранноеИмяФайла,Дополнительные параметры) Объект.Логотип = Адрес; ЛоготипДвоичныеДанные = Новый ДвоичныеДанные(ВыбранноеИмяФайла); ЛоготипПуть = ЛоготипДвоичныеДанные; //Реквизит ЛоготипПуть тип = Произвольный КонецПроцедуры Записываю данные в XML: Файл = Новый ЗаписьXML; Файл.ЗаписатьНачалоЭлемента("Логотип"); Файл.ЗаписатьАтрибут("Лого",XMLСтрока(ЛоготипПуть)); Читаю XML ЧтениеXML = Новый ЧтениеXML; Пока ЧтениеXML.Прочитать() Цикл ЛоготипДвоичныеДанные = Base64Значение(ЧтениеXML.Значение); ЛоготипХранилище =ПоместитьВоВременноеХранилище(ЛоготипДвоичныеДанные); Объект.Логотип = ЛоготипХранилище; КонецЦикла; Суть проблемы: При преобразовании в двоичные данные в процедура ОбработкаВыбораФайла, получаю набор двоичных данных. Если сразу поместить их во временное хранилище и отправить в реквизит отображение картинки, то картинка будет отображаться. При записи в XML двоичные данные конвертируются в Base64Строка и записываются в файл как надо. Однако, при чтении из XML видим, что в ЛоготипДвоичныеДанные = Base64Значение(ЧтениеXML.Значение); возвращается не такой же двоичный код как при записи, а в разы укороченный. Теперь вопросы: Почему это происходит и как это исправить? |
|||
|
1
cw014
11.12.15
✎
09:21
|
> возвращается не такой же двоичный код как при записи, а в разы укороченный.
А какой он двоичный код возвращает? Что значит "укороченный"? |
|||
|
2
Лефмихалыч
11.12.15
✎
09:22
|
зачем ты при чтении помещаешь во временное хранилище?
|
|||
|
3
StKnight217
11.12.15
✎
09:24
|
(1) Возвращает только первые несколько строк двоичного кода, который был записан
|
|||
|
4
Лефмихалыч
11.12.15
✎
09:25
|
ТИпЗнч(Объект.Логотип) - что возвращает?
|
|||
|
5
StKnight217
11.12.15
✎
09:28
|
(4) Строку
|
|||
|
6
Лефмихалыч
11.12.15
✎
09:29
|
(5) а длина той строки какая?
|
|||
|
7
StKnight217
11.12.15
✎
09:30
|
(6) Неограниченная
|
|||
|
8
los_hooliganos
11.12.15
✎
09:33
|
ЧтениеXML.Значение - там то что нужно, неукороченное?
|
|||
|
9
StKnight217
11.12.15
✎
09:34
|
(8) Да
|
|||
|
10
Лефмихалыч
11.12.15
✎
09:35
|
(7) почему сразу двоичные данные в соответствующий реквизит объекта не запихать? ЗАчем временное хранилище?
|
|||
|
11
StKnight217
11.12.15
✎
09:39
|
(10) При непосредственной передачи в реквизит картинка не отображается, только путем присваивания ссылки на временное хранилище
После присваивания "обрубка" двоичного кода, в реквизите отражается квадрат со вписанным крестиком |
|||
|
12
StKnight217
11.12.15
✎
09:41
|
(11) Обрубка, помещенного во временное хранилище
|
|||
|
13
StKnight217
11.12.15
✎
09:57
|
(10) На сайте http://foxtools.ru/Base64 Декодировал записанную в XML ссылку. Возвращает файл с расширением .dat
Если открыть его через Средство просмотра изображений Windows, открывает мою зашифрованную картинку |
|||
|
14
StKnight217
11.12.15
✎
13:17
|
(0) Решил проблему. Записывался в XML массив строк, а считывались двоичные данные. Между строками образовывались пробелы. Из-за этого считывалась и десериализовывалась только первая строка. Убрал пробелы между строками и все заработало.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |