Используйте cpprest (Casablanca) для возврата ответа в формате PDF

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

На один из запросов, которые я принимаю, нужно ответить файлом PDF. Я вижу, что класс http_request имеет метод answer(), который принимает асинхронный поток. На всю жизнь я не могу понять, как связать этот поток с моим файлом 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");

person Jeff    schedule 03.10.2018    source источник


Ответы (1)


Надеюсь, вы уже поняли это. Вот как я отвечаю с локальными файлами 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) {});
        });
}
person D. Ch    schedule 04.07.2019