web-dev-qa-db-fra.com

Comment enregistrer des images dans une base de données en utilisant ASP.NET Core?

Je travaille sur un petit blog utilisant ASP.NET Core (MVC 6) EF Visual Studio. J'ai du mal à trouver comment enregistrer des images dans une base de données. J'ai lu sur IFormfile mais je ne comprends pas vraiment comment s'y prendre, je suis coincé. Je suis nouveau à cela et aimerais avoir un peu d'aide.

Je veux enregistrer l'image dans le message que je crée (sous la même forme). Je veux donc l'enregistrer dans postID. Ensuite, je dois pouvoir afficher l'image, comment puis-je le faire? Je sais qu'il y a beaucoup à demander, mais je ne sais pas vers qui me tourner. N'hésitez pas à envoyer des liens si vous avez de bons conseils ou des idées.

Merci d'avance!

6
ErikLm

Vous pouvez trouver cela utile si vous devez enregistrer dans la base de données. Ceci était une modification de https://www.mikesdotnetting.com/article/259/asp-net-mvc-5-with-ef-6-working-with-files et de nombreuses contributions de k7Boys répondent ici MVC 6 HttpPostedFileBase?

<input type="file" name="Image" id="Imageinput">

Blog Modal Class devrait avoir le champ Img comme;

    public int BlogId{ get; set; }
    ...
    public byte[] Img{ get; set; }

Manette;

    public async Task<IActionResult> Create([Bind("BlogId,...Img")] Blog blog t, IFormFile Image)
    if (ModelState.IsValid)
        {
            if (Image!= null)

            {
                if (Image.Length > 0)

                //Convert Image to byte and save to database

                {

                    byte[] p1 = null;
                    using (var fs1 = Image.OpenReadStream())
                    using (var ms1 = new MemoryStream())
                    {
                        fs1.CopyTo(ms1);
                        p1 = ms1.ToArray();
                    }
                    Blog.Img= p1;

                }
            }

            _context.Add(client);
            await _context.SaveChangesAsync();

            return RedirectToAction("Index");
        }

Il m'a fallu quelques heures pour arriver ici. Travaillons maintenant à la visualisation des images dans une vue, suis sûr que cela ne sera pas complexe. Prendre plaisir

5
sav

Essayez cela fonctionne bien

manette

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("Id,PostMode,Message,Image,AccountId,Created,Status")] Post post, IFormFile Image)
        {
            if (ModelState.IsValid)
            {
                using (var ms = new MemoryStream())
                {
                    Image.CopyTo(ms);
                    post.Image = ms.ToArray();
                }

                    _context.Add(post);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(post);
        }

Afficher l'image

@foreach (var item in Model)
        {
    <img class="img-responsive full-width" src="data:image/jpeg;base64,@Convert.ToBase64String(item.Image)" />
}
0
Jagdish Kumar