Я разрабатываю приложение, использующее. net core 3.1, в котором есть API для бэкэнда и приложение angular для внешнего интерфейса. Код ниже в моем ts:
nodeSelect(data: any) {
if (data.node.IsFolder == "true")
{
window.open(environment.apiUrl + "Archive/DownloadZip?path=" + data.node.data, "_blank")
}
else
{
window.open(environment.apiUrl + "Archive/DownloadFile?path=" + data.node.data, "_blank") //data.node.data conatins the path of the file
}
}
и моя html часть выглядит следующим образом:
<div class="col-md-4" *ngIf="files.data.length!=0">
<p-tree [value]="files.data" (onNodeSelect)="nodeSelect($event)" selectionMode="single" [(selection)]="selectedNode">
</p-tree>
</div>
Вот мой код api:
[Route("DownloadFile")]
[HttpGet]
public ActionResult DownloadFile(string path)
{
try
{
path = _archiveservice.GetRootPath() + HtmlEncoder.Default.Encode(path);
if (System.IO.File.Exists(path))
{
var fileBytes = System.IO.File.ReadAllBytes(path);
new FileExtensionContentTypeProvider().TryGetContentType(Path.GetFileName(path), out var contentType);
return File(fileBytes, contentType ?? "application/octet-stream", Path.GetFileName(path));
}
else
{
return new EmptyResult();
}
}
catch (Exception ex)
{
ExceptonLogger.Log(_logger, ex);
return null;
}
}
после удаления фильтра [Авторизовать] с контроллера он загружался. но мне нужно сохранить фильтр [Авторизовать], так как у контроллера есть и другие методы. Есть ли способ сделать это, используя только Angular ?? Я не хочу использовать go серверную часть для загрузки, если это возможно. Будем очень благодарны за любые лиды :)