В настоящее время я работаю над проектом веб-сайта .NET (ядро 3.1), и я немного застрял в том, как обрабатывать изображения, и, поскольку я не мог найти правильный ответ для своего случая, вот он. Я работаю над системой отчетов, в которой пользователю должно быть разрешено создавать отчет и при необходимости прикреплять изображения. У меня вопрос: следует ли хранить изображения в базе данных или папке? Изображения не будут содержать «угрозы национальной безопасности», но я предполагаю, что они могут носить частный характер. Является ли хорошей практикой хранить их в базе данных? Мне показалась немного запутанной процедура их хранения:

public async Task<IActionResult> Create(IFormFile image)
    {
        if (ModelState.IsValid)
        {

            byte[] p1 = null; //As I understand, it should be store as byte[]
            using (var fs1 = image.OpenReadStream())
            using (var ms1 = new MemoryStream())
            {
                fs1.CopyTo(ms1);
                p1 = ms1.ToArray();
            }
            Image img = new Image(); //This is my Image model
            img.Img = p1; //The property .IMG is of type "varbinary" on the DB.

            _imagesDB.Images.Add(img); //My context
            await _imagesDB.SaveChangesAsync();

            return RedirectToAction(nameof(Index)); //if everything went well go back to index-
        }
        return View(report);
    }

Это более или менее нормально (я думаю), но я не смог прочитать его из базы данных и отправить в представление для просмотра.

Есть идеи о том, как считывать изображения из моего контекста и, особенно, как отправить их с контроллера в представление?

Заранее спасибо. - Альваро.

0
Luca Prodan 28 Фев 2021 в 07:57

1 ответ

Вы можете сохранить изображение в базе данных, но это неправильно (из-за того, что DB Direct не сохранил изображение. Строка Base64 или путь к папке хранилища изображений), и если вы использовали средство чтения URL-адресов изображения, подобное этому (

Rezaul Khan 28 Фев 2021 в 05:10