|
Как записать картинку во внешнюю SQL базу | ☑ | ||
---|---|---|---|---|
0
ЭЦ
11.01.13
✎
15:14
|
Господа !
Есть необходимость обработкой писать данные во внешнюю базу MS SQL. Все типы пишутся нормально, но записать картинку в Blob поле не получается. Прошу подсказать рабочий пример. Спасибо |
|||
1
mikecool
11.01.13
✎
15:15
|
http://www.1c-galaxy.ru/forum4/topic410837/
первая ссылка по красной Я |
|||
2
pessok
11.01.13
✎
15:20
|
(1) там вроде не решили :)
(0) в блоб у меня тоже не писалось как-то, в итоге клали на фтп, а вместо блоба сделали стринг с названием картинки. уже потом веб-сервис грузил на сайт с фтп |
|||
3
ЭЦ
11.01.13
✎
15:20
|
насчет первой ссылке - не понял, а за пример спасибо щас будем пробовать
|
|||
4
mikecool
11.01.13
✎
15:21
|
(2) а я не разбирал, просто механизм немного путанный, но когда то сам делал и все работало
|
|||
5
mikecool
11.01.13
✎
15:21
|
+4 отличие есть в методике заливки через разные провайдеры
|
|||
6
pessok
11.01.13
✎
15:22
|
(4) а вот у меня вроде не писало... а может и писало, но сайтостроители не могли блоб разобрать... не помню, помню, что делали фтп :)
|
|||
7
ЭЦ
12.01.13
✎
17:28
|
ЕСли кому интересно то вот так пишет :
Попытка Поток = Новый COMОбъект("ADODB.Stream"); Поток.Type = 1; Поток.Mode = 3; Поток.Open(); Поток.LoadFromFile(фИмяФайла); ЗагружаемыйФайл = Новый ДвоичныеДанные(фИмяФайла); Команда = Новый COMОбъект("ADODB.Command"); Команда.ActiveConnection = SQLСоединение; Команда.NamedParameters = True; Команда.CommandType = 1; Команда.CommandText = "UPDATE Anketa SET Anketa.Anketa_Pic = ? WHERE Anketa.Anketa_Guid = '395e5380-44fa-11e1-9025-00155dc80406'"; ПараметрSQL=Команда.CreateParameter("@Pic", 205, 1,10000,Поток.Read()); Поток.Close(); Команда.Parameters.Append(ПараметрSQL); Команда.Execute(); Исключение Сообщить("НЕУДАЧНАЯ ПОПЫТКА ЗАПИСИ ИЗОБРАЖЕНИЯ !",СтатусСообщения.Важное); Сообщить(" описание = " + ОписаниеОшибки()); КонецПопытки; SQLСоединение.Close(); |
|||
8
mikecool
12.01.13
✎
17:30
|
(7) нормально так ))
а ЗагружаемыйФайл = Новый ДвоичныеДанные(фИмяФайла); зачем? |
|||
9
mikecool
12.01.13
✎
17:32
|
и вопрос: вот это нельзя было сократить?
Поток.Open(); Поток.LoadFromFile(фИмяФайла); Поток.Read() может там все в одну строку делается... |
|||
10
vde69
12.01.13
✎
18:23
|
(7) с большими файлами будут проблеммы
более правильно использовать спец оператор AppendChunk который "кусочками" отправляет данные пример вот тут http://infostart.ru/public/16687/ только тип поля там в базе другой но будет работать и с имж |
|||
11
ЭЦ
12.01.13
✎
19:17
|
Господа
Я Вам выложил работающий пример если есть желание улучшить - то улучшите и выложите работающий код. Это будет правильно |
|||
12
ЭЦ
12.01.13
✎
19:18
|
Например хотелось бы юзать параметр по наименованию а не по номеру.
|
|||
13
vde69
12.01.13
✎
21:15
|
(11) ты в своем примере не сможешь залит файл в 100 метров, ну не сможешь по определению и даже в 10 метров скорее всего не сможешь и дажу в 1 метр зальешь только если на сервере будет дофига памяти....
|
|||
14
Jofa
12.01.13
✎
21:32
|
(13)Напиши свой пример
|
|||
15
vde69
12.01.13
✎
22:08
|
||||
16
vde69
12.01.13
✎
22:11
|
(15) + сам офигел, пример 7 ми летней давности
|
|||
17
Jofa
12.01.13
✎
22:17
|
(15)Таким образом любой файл можно записать?
|
|||
18
vde69
12.01.13
✎
22:42
|
(17) в разумных пределах, сколько сам скуль тянет
|
|||
19
Jofa
13.01.13
✎
12:32
|
(18)Что ты подразумваешь под "сам скуль тянет"?
|
|||
20
vde69
13.01.13
✎
18:03
|
(19) у самого скуля есть ограничения на размер поля имж, на память не помню какие, да и от версий вроде зависит вообще максимальный размер базы, например на стандарт едишен теробайный имдж не возмет по определению...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |