使用MVC Core下载文件

时间:2016-02-06 05:50:30

标签: asp.net-core-mvc

我找不到使用MVC Core下载文件的参考。

我们有一个单独的exe文件供会员从我们的网站下载。过去我们已经把

<a href=(file path)> Download < /a>供我们的用户点击。我想在MVC Core中按照

的方式做一些相同的事情
<a href=@ViewData["DownloadLink"]> Download < /a>

使用文件路径填充DownloadLink。

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

`

链接<a href=@ViewData["DownloadLink"]> Download < /a>获取正确的路径,但点击后只会在地址栏中显示路径。有没有简单的方法来设置下载链接?

2 个答案:

答案 0 :(得分:38)

我使用@Tieson T发布的this回答来提出这个解决方案

    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);
    }

视图现在是

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

@Ageonix对于不要求〜转到wwwroot也是正确的

答案 1 :(得分:1)

我不是我可以尝试的地方,但是这样的事情可以做到吗?

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