使用cpprest(卡萨布兰卡)返回PDF响应

时间:2018-10-03 05:05:26

标签: c++ server istream casablanca

我在Ubuntu Linux上的服务器中使用cpprest。到目前为止,我已经能够处理请求,并以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 :(得分:0)

我希望你已经知道了。这是我回复本地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) {});
        });
}