Имя: Пароль:
1C
 
Как записать в базу mysql в поле с типом blob картинку?
0 redding
 
02.11.15
22:27
Попробовал два варианта:
1) Привести фоток  типу comsafearray, а дальше, что с ним делать непонятно, просто через запрос не запишешь в базу.

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

Вообще реально средствами 1с обойтись или нужно вк или скрипты юзать?
1 Записьдампа
 
02.11.15
22:42
Подключение через ADO, через ODBC - внешние источники, или через как?
2 redding
 
02.11.15
22:44
(1) Через ADO
3 Записьдампа
 
02.11.15
22:47
(2) Через AppendChunk
За примерами - в гугль.
4 kiruha
 
02.11.15
22:48
Base64 летит и журчит в компании топ 100. Вызовите спеца если не але
5 redding
 
02.11.15
22:49
(4) Лучше бы пример скинули, журчащего Base64.
6 kiruha
 
02.11.15
22:52
Я уже не на работе. А чего там пример - преобразуешь люой файл в Base64 и записываешь
7 redding
 
02.11.15
23:05
(6)
ДД = Новый ДвоичныеДанные(ДанныеФайла.ПолноеИмяФайла);
Строка64 = Base64Строка(Двоич);

ТекстЗапроса = "INSERT INTO Photo (ID, PREVIEW_RASTER) VALUES("+id+", '"+Строка64+"')";

Так?
8 Кирпич
 
02.11.15
23:18
Ищи ado Stream наверное
9 Кирпич
 
02.11.15
23:21
10 redding
 
02.11.15
23:21
(8)
Поток = Новый COMОбъект("ADODB.Stream");
Поток.Type = 1;  
Поток.Open();
Поток.LoadFromFile(ДанныеФайла.ПолноеИмяФайла);
ПотокБайт = Новый ComSafeArray(Поток.Read());

Для этого?
11 Кирпич
 
02.11.15
23:28
Для (9)
12 kiruha
 
03.11.15
01:23
(7) Примерно. У меня немного сложнее - через вебсервис, а в ado с параметрами работаю - нет проблем с спецсимволами и т.п.
13 redding
 
03.11.15
13:05
(3) Спс за наводку.
Данные записываются, но если смотреть SQL менеджером, то фото отображаются в виде html корректно, а  в виде изображения совсем не отображаются, не определен тип и размер. Не знаешь, где косяк?
Пишу в базу вот так:
НаборЗаписей = Новый COMОбъект("ADODB.Recordset");
    КомандаSQL = Новый COMОбъект("ADODB.Command");
    КомандаSQL.ActiveConnection = Соединение;
    КомандаSQL.CommandText=    "INSERT INTO Photo(id, PREVIEW_RASTER) VALUES(?, ?)";    
    КомандаSQL.CommandType=1;//adCmdText
    ПараметрSQLFileID = КомандаSQL.CreateParameter("id", 200, 1, 36);//adVarChar, adParamInput
    ПараметрSQLFileID.Value = Число(данныеФайла.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();
14 vde69
 
03.11.15
13:24
(13)поменяй тип поля с блоба на имедж
15 redding
 
03.11.15
13:28
(14) Что за тип такой имедж? нет у меня его в списке выбора типов в mysql.
16 vde69
 
03.11.15
13:31
(15) в MSSQL называется "image" в мускуле не знаю есть или нет....
17 vde69
 
03.11.15
13:32
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.