Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Залить картинку на сервер - 2 Добавлено: 04.08.05 14:23  

Автор вопроса:  danser | ICQ: 299287824 
В каком то топике Павел писал:

...
В базе делаем поле типа image - в него можно заливать любые бинарные
данные, в том числе и картинки.

При сохранении в БД берем картинку, сохраняем ее в байтовый массив:

Dim img As Image 'сюда помещается картинка
'Некие действия над картинкой, если нужно
Dim MyOut As New IO.MemoryStream
img.Save(MyOut, Imaging.ImageFormat.Png) 'Тут формат указывается
Dim bytes() As Byte
bytes = MyOut.GetBuffer

В bytes в итоге лежит картинка в бинарном виде.
Сохраняем картинку в БД:

Dim Conn As SqlConnection = DB.Conn
Dim SQL As String
Dim Comm As SqlCommand
SQL = "Insert Into log (TaskInfo) Values (@taskinfo)"
Comm = New SqlCommand(SQL, Conn)
Comm.Parameters.Add("@taskinfo", SqlDbType.Image).Value = bytes
Comm.ExecuteNonQuery

Если картинка берется из файла, то нужно для получения данных из файла
использовать классы из System.IO.

Ну а достать картинку тоже несложно. Допустим Вы загрузили данные в
DataTable. И нужно достать картинку из нулевой DataRow...

Dim bytes() As Byte = CType(DT.Rows(0).Item("taskinfo"), Byte())
Dim ms As New MemoryStream(bytes)
ms.Position=0
Dim img As Image = Image.FromStream(ms)
ms.Close
PictureBox1.Image = img
...

Подобним механизмом я воспользовался для занесения в БД обекта типа MyType (вместо Image).
ВОПРОС: При востановлении обекта использовалась строка:

Dim img As Image = Image.FromStream(ms)

Как мне для моего обекта типа MyType сделать перевод MemoryStream->MyType?

Спасибо.

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 04.08.05 15:38
Используйте сериализацию.

Ответить

Номер ответа: 2
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #2 Добавлено: 05.08.05 16:54
Да... сереализация это хорошо но как мне "захватить" саму ячейку? Через Reader не получается - инстукцию в SQLCommand типа "SELECT A FROM Tab ..." пишет что ошибка - нельзя использовать для nChar, Image... инструкцию Select
Что делать?

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 05.08.05 17:27
У меня без проблем Select работает.

Ответить

Номер ответа: 4
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #4 Добавлено: 05.08.05 18:31
Да разобрался, моя ошибка - я питался использовать DISTINCT и ORDER BY ... при виборке через SELECT

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам