Как отобразить файл PDF в веб-приложении ASP. NET - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть веб-API и веб-приложение, написанные на asp. net, и я хочу отправить PDF-файл из API в веб-приложение для отображения в новом окне браузера, API работает, отправляя файл в качестве потокового содержимого, но я не могу найти способ побудить браузер клиента отобразить это в новом окне, я не могу заставить браузер сделать запрос к API напрямую, так как мне нужно сначала добавить заголовок аутентификации.

У кого-нибудь есть идеи?

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

код API:

    public HttpResponseMessage Get()
    {
        var response = new HttpResponseMessage();

        string auth;
        try
        {
            auth = Request.Headers.Authorization.Parameter;
        }catch { return new HttpResponseMessage(HttpStatusCode.Unauthorized); }
        if (auth == "test" || auth == null)
        {
            FileStream stream = File.OpenRead(Path.Combine(Storage.FilesDirectory, "0d23b37f-3ade-4342-beea-c6ba2cbf83cb.file"));
            response.Content = new StreamContent(stream);
            response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
            return response;
        }
        else return new HttpResponseMessage(HttpStatusCode.Forbidden);
    }

Текущий код клиента, который получает поток, но я не знаю, как отобразить его в браузере:

        HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Get, API.DocumentUrl);
        req.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", "test");
        var res = await HttpClientSingleton.Client.SendAsync(req);
...