c++ - CppRestSDK 如何发布多部分数据

标签 c++ http c++17 multipart cpprest-sdk

我正在尝试将多部分数据发布到服务器,我正在从 CPR 切换到 CPPRestSDK,但我似乎找不到任何关于它的文档

来自 CPR,https://github.com/whoshuu/cpr

意思是我已经尝试过该代码,但我似乎无法在 cpprestsdk 上找到任何有关多部分数据的文档。

    cpr::Multipart multipart_data{};

    for (size_t i = 0; i < files.size(); i++) {
        if (!is_image_or_gif(files[i].filepath)) {
            std::string entire_file = read_entire_file(files[i].filepath);
            std::string custom_filename{ files[i].spoiler ? "SPOILER_" : "" };
            multipart_data.parts.emplace_back(
                "file" + std::to_string(i),
                cpr::Buffer{ entire_file.begin(),
                             entire_file.end(),
                             custom_filename + files[i].filename },
                "application/octet-stream");
        } else {
            multipart_data.parts.emplace_back("file" + std::to_string(i),
                                              cpr::File(files[i].filepath),
                                              "application/octet-stream");
        }
    }

    auto payload_json = nlohmann::json{
        { "content", content },
        { "tts", tts }
    }.dump();
    multipart_data.parts.emplace_back("payload_json", payload_json);

    auto response = cpr::Post(
        cpr::Url{ endpoint("/channels/%/messages", id) },
        cpr::Header{ { "Authorization", format("Bot %", discord::detail::bot_instance->token) },
                     { "Content-Type", "multipart/form-data" },
                     { "User-Agent", "DiscordBot (http://www.github.com/yuhanun/dpp, 0.0.0)" },
                     { "Connection", "keep-alive" } },
        multipart_data);

file 结构非常明显。

header ,很好,我想通了,我只是需要一些帮助,基本上可以发送多部分数据 :)

我的预期结果是让服务器以“成功”json 响应,在本例中是已发送消息的 Message 对象,但是,现在,我什至不知道从哪里开始。

最佳答案

由于某些原因,这得到了一些赞成票,我想回答这个问题。

我很久以前就解决了这个问题,您可以查看我的存储库以了解具体方法。

https://github.com/Yuhanun/DPP/blob/master/src/channel.cpp#L108

https://github.com/Yuhanun/DPP/blob/master/src/utils.cpp#L180

享受解决方案。

关于c++ - CppRestSDK 如何发布多部分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497375/

相关文章:

rest - 使用 NTLM 身份验证的 Http 发布请求 (java)

http - 当宽度高于 1280px 时进行侧边填充

javascript - AngularJS - GET 响应无法在 HTML 中显示

c++ - 是否可以使用 `std::set_intersection` 来检查两个集合是否有任何共同元素?

c++ - 根据参数的默认值启用模板参数类型的自动推导

c++ - 我可以像 `delete[]` 那样获取动态分配数组的大小吗?

c++ - 我可以让 GCC 在将太宽的类型传递给函数时发出警告吗?

c++ - 在定义嵌套类之前声明它们

c++ - 构造函数 : difference between defaulting and delegating a parameter

c++ - 避免使用虚方法构造具有空基类的构造函数