2017-01-06 3 views
3

Я не знаю почему, но я не могу отобразить изображение из своей базы данных на мой взгляд. Он отображается в правильном разрешении для изображения, но он в основном трансперант. Я не уверен, что что-то в способе сохранения изображения неправильное (не должно быть), или если это что-то с отображением. Я прошу прощения, если мой вопрос слишком простой, но я застрял на этом больше, чем я должен быть :(Невозможно отобразить изображение из базы данных в asp.net view

вот скриншот проблемы: enter image description here

значение атр: SRC = "данные: изображение/PNG; base64, iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp/PU =»

Here'how моя модель выглядит:

public int CompId { get; set; } 
    public byte[] ImageData { get; set; } 
    [NotMapped] 
    public HttpPostedFileBase UploadImage { get; set; } 
    [NotMapped] 
    public string ImageBase64 => System.Convert.ToBase64String(ImageData); 
    public string CompanyName { get; set; } 
    public string CompanyAddress { get; set; } 

метод Действие:

public ActionResult Create([Bind(Include = "CompId,ImageData,CompanyName,CompanyAddress,CompanyCountry,CompanyCity,CompanyPostalCode,CompanyPhoneNumber,EmailCA")] Company company, HttpPostedFileBase UploadImage) 
     { 
      if (ModelState.IsValid) 
      { 
       byte[] buf = new byte[UploadImage.ContentLength]; 
       UploadImage.InputStream.Read(buf, 0, buf.Length); 
       company.ImageData = buf; 

       db.Companies.Add(company); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      return View(company); 
     } 

И вид:

@model eksp.Models.Company 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Details</h2> 

<div> 
    <h4>Company</h4> 
    <hr /> 
    <dl class="dl-horizontal"> 
     <dt> 
      @Html.DisplayNameFor(model => model.ImageData) 
     </dt> 

     <dd> 
      <img src="data:image/png;base64,@Model.ImageBase64" /> 
     </dd> 

Любая помощь будет оценена.

+2

Проверьте полученный HTML-источник страницы: вы видите, что ожидается в этом значении атрибута img src? – uncoder

+0

Также установите точку останова в cshtml и проверьте массив '@ Model.ImageData'. У вас есть данные? – Alexei

+0

@uncoder. Я просто добавил это значение в вопрос. –

ответ

3

Угадайте, что значение, которое вы показали, это:

SRC = "Данные: изображение/PNG; base64, iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp/PU ="

сюрприз: 300x225 пустой PNG изображение (с прозрачным фоном):

enter image description here

Поэтому убедитесь, что вы поместите некоторые реальные изображения в свою базу данных, если вы ожидаете увидеть их в браузере. В противном случае все, что вы получите в браузере, - это 300x225 пикселей пустоты (что мы и видим на вашем скриншоте).

Это, как говорится, ваш код в порядке, это данные, с которыми вы работаете, что заставляет вас думать, что есть проблема.

+0

Я постараюсь загрузить его повторно. p.s здрасти: д –

+0

Просто не забудьте загрузить еще несколько изображений * visible: image :-) –

+0

Да, спасибо за это. Теперь это сработало. Я не знаю, как это произошло: D –

Смежные вопросы