Salve ragazzi, nel disperato tentativo di uploadare un file presente sul mio desktop al mio server altervista, ho scritto questa funzione

codice:
bool ftpUpload(char * _filepath, char * __id){
	char URL[500];
	FILE * upload;
	curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
	  if(curl) {
	sprintf(URL, "ftp://%s/tree/%s/", HOST, __id);
	curl_easy_setopt(curl, CURLOPT_URL, URL);
	//curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
	upload = fopen(_filepath, "rb");
    curl_easy_setopt(curl, CURLOPT_READDATA, upload);
	curl_easy_setopt(curl, CURLOPT_USERPWD, "username:password");
	curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
    res = curl_easy_perform(curl);
	curl_easy_cleanup(curl);
	curl_global_cleanup();
	fclose(upload);
	return true;
	  }
	  return false; 
}
Riscontro però due problemi, il primo è che curl_easy_perform(curl) ritorna l'errore CURLE_MALFORMAT_URL quando il mio URL contiene ftp anzicchè http, il secondo è che quando sostituisco http ad ftp curl_easy_perform(curl) ritorna CURLE_WRITE_ERROR

Da cosa può dipendere?

PS: URL = ftp://mywww.altervista.org/tree/124/