web-dev-qa-db-fra.com

Télécharger le fichier en utilisant MVC Core

Je ne trouve pas de référence au téléchargement d'un fichier à l'aide de MVC Core.

Nous avons un seul fichier exe que les membres peuvent télécharger sur notre site Web. Dans le passé, nous avons mis

<a href=(file path)> Download < /a> pour que nos utilisateurs puissent cliquer. Je voudrais faire quelque chose d’équivalent dans MVC Core le long des lignes de 

<a href=@ViewData["DownloadLink"]> Download < /a>

avec DownloadLink renseigné avec le chemin du fichier.

public class DownloadController : Controller
{
    [HttpGet]
    public IActionResult Index()
    {
        ViewData["DownloadLink"] = ($"~/Downloads/{V9.Version}.exe");
        return View();
    }
}

`

Le lien <a href=@ViewData["DownloadLink"]> Download < /a> obtient le chemin correct, mais lorsque vous cliquez dessus, seul le chemin sera rendu dans la barre d'adresse. Existe-t-il un moyen simple de définir un lien de téléchargement?

19
Vague

J'ai utilisé this réponse posté par @Tieson T pour proposer cette solution

    public FileResult Download()
    {
        var fileName = $"{V9.Version}.exe";
        var filepath = $"Downloads/{fileName}";
        byte[] fileBytes = System.IO.File.ReadAllBytes(filepath);
        return File(fileBytes, "application/x-msdownload", fileName);
    }

La vue est maintenant

<a asp-action="Download" asp->
Download

@Ageonix avait également raison de ne pas avoir besoin du ~ pour se rendre à wwwroot

36
Vague

Je ne suis pas un endroit où je peux l'essayer, mais est-ce que quelque chose comme ça ferait l'affaire?

<a href="<%= Url.Content('~/Downloads/{ V9.Version}.exe') %>"> Download </a>
1
Ageonix