以下是一个使用C++编写的读取文件并上传到服务器的示例代码:

#include <iostream>
#include <fstream>
#include <curl/curl.h>

size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* response) {
    size_t totalSize = size * nmemb;
    response->append((char*)contents, totalSize);
    return totalSize;
}

int main() {
    std::string filePath = "path/to/file.txt";
    std::string url = "http://example.com/upload";
    std::string response;

    std::ifstream file(filePath, std::ios::binary);
    if (!file) {
        std::cout << "Failed to open file." << std::endl;
        return 1;
    }

    // 获取文件大小
    file.seekg(0, std::ios::end);
    std::streamsize fileSize = file.tellg();
    file.seekg(0, std::ios::beg);

    // 创建缓冲区
    char* buffer = new char[fileSize];

    // 读取文件内容到缓冲区
    file.read(buffer, fileSize);
    file.close();

    // 初始化 libcurl
    curl_global_init(CURL_GLOBAL_ALL);
    CURL* curl = curl_easy_init();
    if (curl) {
        // 设置上传的 URL
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());

        // 设置上传的数据
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, buffer);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, fileSize);

        // 设置回调函数,用于接收服务器的响应
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);

        // 执行上传
        CURLcode res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            std::cout << "Failed to upload: " << curl_easy_strerror(res) << std::endl;
        } else {
            std::cout << "Upload successful!" << std::endl;
            std::cout << "Server response: " << response << std::endl;
        }

        // 清理资源
        curl_easy_cleanup(curl);
    }

    // 清理缓冲区
    delete[] buffer;

    // 清理 libcurl
    curl_global_cleanup();

    return 0;
}

在上述代码中,需要使用到 libcurl 库来进行文件上传。请确保已经安装了 libcurl 库,并在编译时链接该库。

在代码中,需要设置 filePath 变量为要读取的文件路径,url 变量为服务器的上传接口 URL。

代码中的 WriteCallback 函数用于接收服务器的响应,该函数将响应内容存储到 response 变量中。

注意,这只是一个简单的示例代码,如果需要处理更复杂的上传功能,可能需要更多的代码和处理逻辑

用c++写一个读取文件上传到服务器

原文地址: http://www.cveoy.top/t/topic/iXoZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录