Используйте cpprest (Касабланка), чтобы вернуть PDF-ответ - PullRequest
0 голосов
/ 03 октября 2018

Я использую cpprest на сервере в Ubuntu Linux.На данный момент я могу обрабатывать запросы и отвечать с помощью ответов JSON.

Один из принимаемых мной запросов должен отвечать файлом PDF.Я вижу, что класс http_request имеет метод reply (), который принимает асинхронный поток.Из жизни я не могу понять, как связать этот поток с моим файлом PDF на диске.

utility::string_t pdfFilename = getPdfFilename();
concurrency::streams::istream stream; // how do associate my pdfFilename?
request.reply(web::http::status_codes::OK, stream, "application/pdf");

1 Ответ

0 голосов
/ 04 июля 2019

Надеюсь, ты уже понял это.Вот как я отвечаю с локальными файлами PDF

void replyPdf(web::http::http_request message, string_t file_name)
{
    concurrency::streams::fstream::open_istream(file_name, std::ios::in)
        .then([=](concurrency::streams::istream is)
        {
            web::http::http_response response(web::http::status_codes::OK);

            response.headers().add(L"Content-Disposition", U("inline; filename = \"") + file_name + U("\""));
            response.set_body(std::move(is), U("application/pdf"));

            message.reply(response).then([](pplx::task<void> t) {});
        });
}
...