Подтвердить что ты не робот

Загрузить файл с использованием MVC Core

Я не могу найти ссылку на загрузку файла с использованием MVC Core.

У нас есть один файл exe для участников, которые можно загрузить с нашего сайта. В прошлом мы поставили

<a href=(file path)> Download < /a> для наших пользователей. Я хотел бы сделать что-то эквивалентное в MVC Core по строкам

<a [email protected]["DownloadLink"]> Download < /a>

с DownloadLink, заполненным файловым путем.

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

`

Ссылка <a [email protected]["DownloadLink"]> Download < /a> получает правильный путь, но при нажатии только отображает путь в адресной строке. Есть ли простой способ установить ссылку для загрузки?

4b9b3361

Ответ 1

Я использовал этот ответ, отправленный @Tieson T, чтобы придумать это решение

    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

Ответ 2

Я не где-нибудь, где я могу попробовать, но что-то вроде этого делает трюк?

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

Ответ 3

В предыдущей версии вы могли использовать WebClient для загрузки файла из URL.

Это было заменено на HttpClient в ASPNet Core.

Посмотрите, как использовать HttpClient для загрузки файла из URL здесь Использование WebClient в ASP.NET 5