Сохранение изображения на сервере Sql в поле изображения с использованием С# и Subsonic

В приложении ASP.NET (с использованием фреймворка 2.0) и ORM для этого приложения — Subsonic 2.2, с которым я работаю впервые.

У меня есть изображение, которое я извлек из URL-адреса, и у меня есть объект HttpWebresponse, который я преобразовал в изображение, например так:

    string uri = ...;
    HttpWebRequest lxRequest = (HttpWebRequest) WebRequest.Create(uri);
    HttpWebResponse lxResponse = (HttpWebResponse) lxRequest.GetResponse();
    System.Drawing.Image image = System.Drawing.Image.FromStream(lxResponse.GetResponseStream());

В Sql Server я создал столбец изображения (может быть любой другой двоичный формат, это не проблема), и я хотел бы записать в него свое изображение. Я также хотел бы знать, как читать из столбца, чтобы проверить, правильно ли сохранено изображение.

Любая помощь приветствуется. Спасибо.


person draconis    schedule 24.10.2011    source источник
comment
Image — это устаревший тип данных в SQL Server, поэтому вы можете изменить свой тип данных в базе данных на varbinary(max).   -  person Jeff Reddy    schedule 24.10.2011


Ответы (2)


Для столбца image Subsonic создает свойство byte[].

Поэтому вам придется преобразовать данные (в данном случае System.Drawing.Image) в и из массива байтов.

Другое сайтах скрыто и беззастенчиво скопировано следующее:

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
 MemoryStream ms = new MemoryStream();
 imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
 return  ms.ToArray();
}

public Image byteArrayToImage(byte[] byteArrayIn)
{
     MemoryStream ms = new MemoryStream(byteArrayIn);
     Image returnImage = Image.FromStream(ms);
     return returnImage;
}
person marapet    schedule 24.10.2011
comment
Спасибо. Это именно то, что мне нужно. - person draconis; 25.10.2011

Изучите Чтение и запись данных изображения SQL, это может помочь тебе

person huMpty duMpty    schedule 24.10.2011
comment
Спасибо за ссылку, но мои данные не в двоичном формате, и я не использую соединение ADO.NET. - person draconis; 24.10.2011