libcurl ftp断点续传

场景:怎么用libcurl实现ftp断点续传

如何用libcurl实现ftp断点续传
如题,在libcurl官网上找了一个上传函数,但测试无法实现
int upload(CURL *curlhandle, const char * remotepath, const char * localpath, long timeout, long tries)
{
  FILE *f;
  long uploaded_len = 0;
  CURLcode r = CURLE_GOT_NOTHING;
  int c;
  f = fopen(localpath, "rb");
  if (f == NULL) {
  perror(NULL);
  return 0;
  }
  curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);
  curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
  curl_easy_setopt(curlhandle, CURLOPT_USERPWD, "spider:spider");  
  if (timeout)
  curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);
  curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
  curl_easy_setopt(curlhandle, CURLOPT_HEADERDATA, &uploaded_len);
  curl_easy_setopt(curlhandle, CURLOPT_WRITEFUNCTION, discardfunc);
  curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
  curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
  curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-"); /* disable passive mode */
  curl_easy_setopt(curlhandle, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);
  curl_easy_setopt(curlhandle, CURLOPT_VERBOSE, 1L);
  for (c = 0; (r != CURLE_OK) && (c < tries); c++) {
  /* are we resuming? */
  if (c) { /* yes */
  /* determine the length of the file already written */
  /*
  * With NOBODY and NOHEADER, libcurl will issue a SIZE
  * command, but the only way to retrieve the result is
  * to parse the returned Content-Length header. Thus,
  * getcontentlengthfunc(). We need discardfunc() above
  * because HEADER will dump the headers to stdout
  * without it.
  */
  curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 1L);
  curl_easy_setopt(curlhandle, CURLOPT_HEADER, 1L);
  r = curl_easy_perform(curlhandle);
  if (r != CURLE_OK)
  continue;
  curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 0L);
  curl_easy_setopt(curlhandle, CURLOPT_HEADER, 0L);
  fseek(f, uploaded_len, SEEK_SET);
  curl_easy_setopt(curlhandle, CURLOPT_APPEND, 1L);
  }
  else { /* no */
  curl_easy_setopt(curlhandle, CURLOPT_APPEND, 0L);
  }
  r = curl_easy_perform(curlhandle);
  }
  fclose(f);
  if (r == CURLE_OK)
  return 1;
  else {
  fprintf(stderr, "%s\n", curl_easy_strerror(r));
  return 0;
  }
}


有没有人用过libcurl实现ftp断点续传功能的,望指教。

------解决方案--------------------
有一个叫CURLOPT_RESUME_FROM的参数
------解决方案--------------------
你为什么选择这个玩意进行FTP断点续传呢?