Ali Majed HA Ответов: 2

Как хранить и ретейвировать изображения в виде двоичных данных в SQL server


Привет
У меня есть


элемент в моем html-файле. Когда пользователь выбирает свое изображение, я получаю выбранное изображение с помощью JavaScript и отправляю его контроллеру в виде JSON:
var _Data = { Image = $("#ImageFileUpload").val();

и в моем контроллере я сохраняю его в своей базе данных:
byte[] binData;
byte[] byteArrey = System.Text.Encoding.UTF8.GetBytes(_LawyerArgument.Picture);
MemoryStream _Stream = new MemoryStream(byteArrey);
UserPicture _UserPicture = _LawEntities.UserPicture
     .Where(c => c.UserId == _UserID).SingleOrDefault();
if (_UserPicture != null)
{
   using (var _BinaryReader = new BinaryReader(_Stream))
   {
       binData = _BinaryReader.ReadBytes(Int32.Parse(_Stream.Length.ToString()));
       _BinaryReader.Close();
   }
    _UserPicture.picture = binData;
}
else
{
    _UserPicture = new UserPicture();
    using (var _BinaryReader = new BinaryReader(_Stream))
    {
        binData = _BinaryReader.ReadBytes(Int32.Parse(_Stream.Length.ToString()));
         _BinaryReader.Close();
    }
     _UserPicture.picture = binData;
     _LawEntities.UserPicture.Add(_UserPicture);

}
_LawEntities.SaveChanges();


он хранит запись в моей таблице, и я могу видеть двоичные данные как изображение, но я думаю, что ошибаюсь в вставке или извлечении данных. потому что, когда я хочу показать выбранное изображение пользователю на веб-сайте, оно не показывает изображение. У меня нет ошибок ни в отладке, ни во время выполнения.

Я получаю изображение по этим кодам:
var _LawyerPictures = _Law.UserPicture
.Take(4)
.Select(s => new
{
    Picture = s.picture,
    ID = s.UserId

}).ToList();

foreach (var item in _LawyerPictures)
{
    string _Path = Path.Combine(Directory.GetCurrentDirectory(),               @"/TemporaryUserPictures/");
    if (!Directory.Exists(_Path))
    {
        Directory.CreateDirectory(_Path);
        var path = HttpContext.Current.Server.MapPath(_Path + item.ID + ".png");
        File.WriteAllBytes(path, item.Picture);
     }
}


Я сохраняю изображения во временную папку, а затем использую ее, чтобы показать их.

Что я уже пробовал:

Я пробовал коды выше, но я не знаю, где у меня проблема, в хранении изображения или в извлечении.

заранее спасибо

2 Ответов

Рейтинг:
12

Er. Puneet Goel

Хранение изображений в SQL и доступ к ним обратно намного проще. Пожалуйста, проверьте здесь

Как сохранить (вставить ) изображение в базу данных в ASP.Net с использованием C# и VB.Net[^]