Показать картинку из базы данных - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть база данных с колонкой фотографий, я пытаюсь отобразить ее на веб-сайте. Я пишу код в Visual studio 2019. Это MVC проект в c#

На двух фотографиях показано, что мне дали. Ссылка со второй картинки нигде не go

Photo1

Photo2

1 Ответ

0 голосов
/ 09 апреля 2020

Существует 2 варианта:

1-й вариант:

Сохраните путь к изображению в вашей базе данных и динамически установите src для <img>

2-й вариант:

Сохраните данные изображения в вашей базе данных и восстановите их при загрузке, ваш <img> src должен быть действием контроллера, который загружает, создает и возвращает изображение.

Edit

Быстрый пример для варианта 2:

В вашем cs html определите ваше изображение следующим образом:

<img src="@Url.Action("GetFromDB", "Image", new { id = 1234 })" />

Обратите внимание, вы можете установить идентификатор вашей фотографии динамически, в зависимости от вашего сценария. Допустим, у вас есть класс пользователя, которому назначено изображение профиля, вам просто нужно использовать этот идентификатор.

В бэкэнде вам нужно действие, которое обрабатывает этот запрос, в этом примере в ImageController:

public ActionResult GetFromDB(int id)
{
    var image = _dbContext.Find(id);
    return File(image.PictureData, image.ContentType);
}

Предполагается, что у вас есть простая модель базы данных для изображений, подобная этой:

class Image
{
    [Key]
    public int ID { get; set; }
    public byte[] PictureData { get; set; }
    public string ContentType { get; set; }
}

Чтобы сохранить изображение в базе данных, вам просто нужно получить его байты и тип контента для Пример как это:

using (var ms = new MemoryStream())
{
    using (var uploadedImage = Image.FromStream(formFile.OpenReadStream(), true, true))
    {
        uploadedImage.Save(ms, ImageFormat.Jpeg); // you can actually chose this yourself, depending on your scenario
    }

    var image = new Model.Image()
    {
        PictureData = ms.ToArray(),
        ContentType = "image/jpeg" // needs to match what you chose above
    };
    _dbContext.Pictures.Add(image);
    _dbContext.SaveChanges();
}
...