upload metodą POST

0

witam.
Wiem(chyba), że jest taka funkcja w curl która umożliwia danych metodą POST z odpowiednimi wartościami.
Czy ktoś może powiedzieć jaka bo nie pamiętam :D

0
struct MemoryStruct
{
char *memory;
size_t size;
};

///////////////////////////
struct MemoryStruct chunk;
CURL *curl;
//////////////////////////

static void *myrealloc(void *ptr, size_t size)
{
if(ptr) return realloc(ptr, size); else return malloc(size);
}

/////////////////////
 
static size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
	size_t realsize = size * nmemb;
	struct MemoryStruct *mem = (struct MemoryStruct *)data;

	mem->memory = (char *)myrealloc(mem->memory, mem->size + realsize + 1);
	if (mem->memory)
	{
		memcpy(&(mem->memory[mem->size]), ptr, realsize);
		mem->size += realsize;
		mem->memory[mem->size] = 0;
	}
	return realsize;
}

///////////////////////

void glowna_funkcja()
{
	struct curl_slist *headerlist=NULL;
	struct curl_httppost *post = NULL;
	struct curl_httppost *last = NULL;
	gchar *url;
	CURLcode res;

	chunk.memory=NULL;
	chunk.size = 0;
	curl = curl_easy_init();
	curl_easy_setopt(curl, CURLOPT_URL, url);
	headerlist = curl_slist_append(headerlist, "Accept: text/html, */*");
	headerlist = curl_slist_append(headerlist, "Connection: keep-alive");
	headerlist = curl_slist_append(headerlist, "Host: host.pl");
	headerlist = curl_slist_append(headerlist, "Content-Type: multipart/form-data");
	curl_formadd(&post, &last, CURLFORM_COPYNAME, "login", CURLFORM_COPYCONTENTS, login, CURLFORM_END);
	curl_formadd(&post, &last, CURLFORM_COPYNAME, "pass", CURLFORM_COPYCONTENTS, pass, CURLFORM_END);
	curl_formadd(&post, &last, CURLFORM_COPYNAME, "MAX_FILE_SIZE", CURLFORM_COPYCONTENTS, "512000", CURLFORM_END);
	curl_formadd(&post, &last, CURLFORM_COPYNAME, "plik", CURLFORM_FILENAME, plik, CURLFORM_CONTENTTYPE, "text/html", CURLFORM_FILE, sciezka, NULL), CURLFORM_END);
	curl_easy_setopt(curl, CURLOPT_USERAGENT, "Cos");
	curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
	curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
	res = curl_easy_perform(curl);
	curl_easy_cleanup(curl);
	curl_formfree(post);
	curl_slist_free_all (headerlist);

	chunk.memory - odpowiedz
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1