Загрузить файл с использованием 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>
получает правильный путь, но при нажатии только отображает путь в адресной строке. Есть ли простой способ установить ссылку для загрузки?
Ответы
Ответ 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