如何在cUrl C ++中实现Ftp Get in Memory功能?

问题描述 投票:0回答:1

我目前使用cUrl Ftp Get函数,该函数从ftp服务器下载文件并将其保存在本地计算机上,并且运行良好。我需要做的是下一步并从服务器获取文件,而无需直接保存而是将其放入内存。为此,我知道还有另一个cUrl函数,即Ftp Get in Memory,但无法弄清楚为什么它不起作用。C ++中有此功能的任何实现吗?

我遇到的问题:“ void *类型的值不能用于初始化char *类型的实体”试图做一些铸造,但一无所获。这发生在malloc(1)和realloc()上。

c++ curl ftp libcurl
1个回答
1
投票

example显示了确切的操作方法:

static size_t
WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
  size_t realsize = size * nmemb;
  struct MemoryStruct *mem = (struct MemoryStruct *)userp;

  char *ptr = static_cast<char*>(realloc(mem->memory, mem->size + realsize + 1));
  if(ptr == NULL) {
    /* out of memory! */ 
    printf("not enough memory (realloc returned NULL)\n");
    return 0;
  }

  mem->memory = ptr;
  memcpy(&(mem->memory[mem->size]), contents, realsize);
  mem->size += realsize;
  mem->memory[mem->size] = 0;

  return realsize;
}


curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);

检查this postthis post以了解如何正确转换C ++中的malloc / realloc返回值

© www.soinside.com 2019 - 2024. All rights reserved.