Как получить удаленный размер файла без Content-Length [C ++] - PullRequest
0 голосов
/ 06 февраля 2019

, поэтому я понял, как получить удаленный файл с размером файла через Интернет с помощью следующего кода:

size_t readHeader(char* header, size_t size, size_t nitems, void *userdata) {
// this works I get the file size when Content-length is available
        if (startsWith(header, "Content-Length:")) {
        std::string header_in_string = replaceAll(header, "Content-Length:", "");
        long size = atol(header_in_string.c_str());
        *file_size = size; 
    }
    else { // do something else }
    return size * nitems;
}
// main function
if (curl) {
    fp = fopen(temp_file_name, "wb");
    curl_easy_setopt(curl, CURLOPT_URL, url);
    curl_easy_setopt(curl, CURLOPT_CAINFO, "./ca-bundle.crt");
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_easy_setopt(curl, CURLOPT_HEADERDATA, this);
    curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, readHeader);
    // writing the downloading content to file
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    fclose(fp);
}

Это обеспечивает решение в C # с помощью GET Получение удаленного размера файлабез content-length , и это также обеспечивает решение в php https://www.perlmonks.org/?node_id=641735, но я хочу знать решение в C ++ или Java или Python, предпочтительно с libcurl.

по этой ссылке я получаюреальный размер файла https://stackoverflow.com/questions/ask?wizard=1, но http://ag.teamdna.de/files/advancedgenetics-1.4.3-1.6.jar обеспечивает 0 или -1

...