Uploadons nos fichiers avec mvc.net core dotnet 6.0

Pour uploader un fichier, nous avons plusieurs choix dans dotnet 6.0, avec mvc.core.
Utiliser fetch (et penser Ă  polyfill votre fetch si vous ĂȘtes sous IE par exemple). Vous pouvez aussi utiliser simplement la mĂ©thode POST.

Un formulaire plus précis

Pour bien démarrer, vous devez ajouter un formulaire avec la précision form-data pour récupérer les données binaires.

<form method="post" enctype="multipart/form-data">
    <input type="file" name="picture" multiple />
    <button>Load files</button>
</form>

Vous notez Ă©galement le champ Input qui va permettre d’uploader votre fichier sur le serveur.
Fait important : C’est bien un type file.
DeuxiĂšme point important, vous pouvez, grĂące Ă  multiple, permettre l’upload de plusieurs fichiers en mĂȘme temps.

Une récupération par une action HttpPost

Du cÎté controller, vous allez prévoir une action, qui est filtrée par un HttpPost.

[HttpPost]
public IActionResult Index(IList<IFormFile> picture)
{
    return View();
}

Notez ici la liste des fichiers, de type IFormFile. Vous allez pouvoir parcourir toute la liste des fichiers uploadés.

Point trÚs important ici : le nom de la variable « picture » doit correspondre au name dans votre input, du cÎté Html. Sinon, vous aurez toujours null dans la variable.

Sauvegarder les données

        [HttpPost]
        public async Task<IActionResult> Index(IList<IFormFile> picture)
        {
            foreach (var item in picture)
            {
                using var file = System.IO.File.OpenWrite("c:\\Tests\\test-" + item.FileName);
                await item.CopyToAsync(file);
            }

            return View();
        }

Notons ici l’utilisation de l’async / await pour la copy du contenu du fichier.

Et voilà, vous pouvez récupérer les données de vos fichiers !

Attention Ă  ne pas enregistrer le fichier avec le nom proposĂ© par le IFormFile. C’est un conseil proposĂ© Ă©galement par dotnet, dans sa documentation sur l’upload.

Ca Ă©veille votre curiositĂ© ?! 🙂

Envie d’en savoir plus

De maĂźtriser asp.net core ?

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639