我目前使用cUrl Ftp Get函数,该函数从ftp服务器下载文件并将其保存在本地计算机上,并且运行良好。我需要做的是下一步并从服务器获取文件,而无需直接保存而是将其放入内存。为此,我知道还有另一个cUrl函数,即Ftp Get in Memory,但无法弄清楚为什么它不起作用。C ++中有此功能的任何实现吗?
我遇到的问题:“ void *类型的值不能用于初始化char *类型的实体”试图做一些铸造,但一无所获。这发生在malloc(1)和realloc()上。
此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);