@gvpugachev
Разработчик Delphi, Go, FrontEnd

Как передать pdf файл из C# rest api в JS?

Здравствуйте, подскажите, пожалуйста, как передать pdf файл из C# rest api в JS?

С# rest api code

[HttpGet("file/{guid}")]
public HttpResponseMessage GetBillFile(string guid) {
    string fileName = getFileName(guid);
    HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
    FileStream fileStream = new FileStream(fileName , FileMode.Open, FileAccess.Read);
    httpResponseMessage.Content = new StreamContent(fileStream);
    httpResponseMessage.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
    httpResponseMessage.Content.Headers.ContentDisposition.FileName = guid;
    httpResponseMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
    return httpResponseMessage;
}



Если в Postman выполнить запрос, то получаю такой json, но файла, почему-то, тут нету.

Response from Postman

{
    "version": {
        "major": 1,
        "minor": 1,
        "build": -1,
        "revision": -1,
        "majorRevision": -1,
        "minorRevision": -1
    },
    "content": {
        "headers": [
            {
                "key": "Content-Disposition",
                "value": [
                    "attachment; filename=111.pdf"
                ]
            },
            {
                "key": "Content-Type",
                "value": [
                    "application/pdf"
                ]
            }
        ]
    },
    "statusCode": "OK",
    "reasonPhrase": "OK",
    "headers": [],
    "trailingHeaders": [],
    "requestMessage": null,
    "isSuccessStatusCode": true
}

  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Нужно использовать ActionResult / IHttpActionResult, а не HttpResponseMessage.
В вашем случае подойдёт FileResult или FileStreamResult
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы