Я не совсем уверен, что вы пытаетесь сделать.На вашей странице есть смесь загрузки и выгрузки файлов.
Для загрузки файлов я делаю следующее.На странице .cshtml у меня есть кнопка, с помощью которой будет вызываться обработчик сообщений для кода за страницей.Например:
<button id='@("download"+item.ID)' asp-page-handler="DownloadFile"
asp-route-externalId="@item.ExternalId"
class="btn btn-primary">Download Report
</button>
Затем в коде у меня есть обработчик, который при моих загрузках получает отчет из базы данных с zip-файлом всех файлов, а затем возвращает его в браузер, который запускает загрузку.Важной частью является возврат PhysicalFile
из обработчика с путем к файлу на диске.
/// <summary>
/// Return the zip file for the requested id.
/// </summary>
/// <param name="externalId">Report external id</param>
public async Task<IActionResult> OnPostDownloadFileAsync(string externalId) {
var report = LoadReport();
if (report == null) {
return Page();
}
var zipFile = report.GetReportDownload();
string filename = FileUtils.WebSafeFileName(zipFile, ".zip");
return PhysicalFile(zipFile, "application/zip", filename);
}