LINUX.ORG.RU

C++ curl FTP убрать лишний вывод в консоль


0

1

Добрый день! При загрузке файла на ftp-сервер присутствует вывод в консоль, который необходимо убрать. Например, при успешной загрузке: «226 Transfer complete». Подскажите, пожалуйста, как это сделать? Вроде бы весь вывод из консоли убран...

static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
	{
		curl_off_t nread;

		size_t retcode = fread(ptr, size, nmemb, (FILE*)stream);

	    nread = (curl_off_t)retcode;

	 // fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
       //   " bytes from file\n", nread);
		return retcode;
	}

void CurlSoapHandler::UploadToFtpServer(const std::string& sFilePath)
{
  CURL *curl;
  CURLcode res;
  FILE *hd_src;
  struct stat file_info;
  curl_off_t fsize;

  struct curl_slist *headerlist=NULL;


  
  std::string sURL("fttp://10.10.10.10//file");
  
  /* get the file size of the local file */ 
  if(stat(sFilePath.c_str(), &file_info)) {
    
  }
  fsize = (curl_off_t)file_info.st_size;

 std::string sFileSize(CURL_FORMAT_CURL_OFF_T);
 

  /* get a FILE * of the same file */ 
  hd_src = fopen(sFilePath.c_str(), "rb");

  /* In windows, this will init the winsock stuff */ 
  curl_global_init(CURL_GLOBAL_ALL);

  /* get a curl handle */ 
  curl = curl_easy_init();
  if(curl) {


    /* we want to use our own read function */ 
    curl_easy_setopt(curl, CURLOPT_READFUNCTION, CurlSoapHandler::read_callback);

    /* enable uploading */ 
    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);

    /* specify target */ 
    curl_easy_setopt(curl,CURLOPT_URL, sURL.c_str());
	
	curl_easy_setopt( curl, CURLOPT_USERPWD, ("user:password");	

    	

    /* pass in that last of FTP commands to run after the transfer */ 
    curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);

    /* now specify which file to upload */ 
    curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);

    /* Set the size of the file to upload (optional).  If you give a *_LARGE
       option you MUST make sure that the type of the passed-in argument is a
       curl_off_t. If you use CURLOPT_INFILESIZE (without _LARGE) you must
       make sure that to pass in a type 'long' argument. */ 
    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
                     (curl_off_t)fsize);

    /* Now run off and do what you've been told! */ 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
	{
		std::string sCurlProblem(curl_easy_strerror(res));
      //fprintf(stderr, "curl_easy_perform() failed: %s\n",
              //curl_easy_strerror(res));

    /* clean up the FTP commands list */
		Logger::Instance(_sFilePath.substr(0, _sFilePath.find_last_of("\/")))->WriteToLog(sCurlProblem);
	}
    curl_slist_free_all (headerlist);

    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  fclose(hd_src); /* close the local file */ 

  curl_global_cleanup();         




  // Wait for keystroke
   //getch();
  //return 0;
}


Ответ на: комментарий от fish_ka

Там действительно всё так плохо, что для таких элементарных вещей приходится делать костыли?

Ttt ☆☆☆☆☆
()
Ответ на: комментарий от fish_ka

Но если бы это была не Маша, а, например, Пётр - все бы дружно объяснили ему какой он мчудак, и !возможно! помогли бы потом.

ZUKMAN
()
Ответ на: комментарий от ZUKMAN

дык, это извесный персонаж. не помогает.

Stil ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.