Как записать в базу mysql в поле с типом blob картинку? Подключение через ADO

1. levante90 02.11.15 22:28 Сейчас в теме
Попробовал два варианта:
1) Привести фото к типу comsafearray, а дальше, что с ним делать непонятно, просто через запрос не запишешь в базу.

2)через Base64 тоже ни але.

Вообще реально средствами 1с обойтись или нужно вк или скрипты юзать?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. mcgoblin 3 02.07.20 06:07 Сейчас в теме
(1)(3)

Здравствуйте. Вот еще рабочий вариант без лишних подключений адо

ФайлДД = ФайлИзображения.Получить();  //файл изображение - ХранилищеЗначений

ЧтениеДанных=Новый ЧтениеДанных(ФайлДД);
МассивЧастей=ЧтениеДанных.РазделитьНаЧастиПо(10);//Тут можно больше, но я что бы наверняка не париться взял лишь 10 бит
ЧтениеДанных.Закрыть();
БайтКодКартинки = "";
Для каждого ЧастьБайта Из МассивЧастей Цикл
    БайтКодКартинки = БайтКодКартинки + Строка(ЧастьБайта.ПолучитьДвоичныеДанные());
КонецЦикла;
БайтКодКартинки = СтрЗаменить(БайтКодКартинки," ","");
  
мТекстЗапроса = "Insert tgbot_image(id,name, body) values (1,'imgname-DestroyAgain',0x"+БайтКодКартинки+")";
Показать
2. levante90 04.11.15 17:49 Сейчас в теме
Данные записываются, но если смотреть SQL менеджером, то фото отображаются в виде html корректно, а в виде изображения совсем не отображаются, не определен тип и размер.
Пишу в базу вот так:
НаборЗаписей = Новый COMОбъект("ADODB.Recordset");
    КомандаSQL = Новый COMОбъект("ADODB.Command");
    КомандаSQL.ActiveConnection = Соединение;
    КомандаSQL.CommandText=    "INS ERT INTO Photo(id, PREVIEW_RASTER) VALUES(?, ?)";    
    КомандаSQL.CommandType=1//adCmdText

    ПараметрSQLFileID = КомандаSQL.CreateParameter("id", 200, 1, 36)//adVarChar, adParamInput

    ПараметрSQLFileID.Val ue = Число(данныеФайла.Id); 
    КомандаSQL.Parameters.Append(ПараметрSQLFileID);
            
  //создаем АДО поток для чтения файла

    Поток = Новый COMОбъект("ADODB.Stream");
    Поток.Type = 1;
    Поток.Open();
    Поток.LoadFromFile(ДанныеФайла.ПолноеИмяФайла);
    ПараметрSQLObject = КомандаSQL.CreateParameter("PREVIEW_RASTER", 128, 1, Поток.Size)//adLongVarBinary, adParamInput

Пока НЕ Поток.EOS Цикл
    ПараметрSQLObject.AppendChunk(Поток.Read(10240));
КонецЦикла;     
    КомандаSQL.Parameters.Append(ПараметрSQLObject);
    НаборЗаписей=КомандаSQL.Execute();
Показать


Никто не сталкивался с подобным?
3. non1ka 30 03.08.16 16:43 Сейчас в теме
Добрый день.
Нашел на Блог Владимира Мудрицкого
Реализацию через ComSafeArray. Сделал как у него, программист MySQL говорит, что все Ок!:

StreamBite = Новый ComSafeArray(Поток.Read()); 

Parameter= Новый COMОбъект("ADODB.Parameter");
Parameter.Name = "@file_data";
Parameter.Direction = 1; //1 - adParamInput
Parameter.Type = 205; //205 - adLongVarBinary
Parameter.Size = StreamBite.GetLength();
Parameter.Value = StreamBite;
Command.Parameters.Append(Parameter);
Показать
levante90; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот