2017-02-08 2 views
4

Пробовал копировать файл HU98373 + TRRepr # o4_201702061135_34 из локальной системы в удаленное место с использованием curl FTP.загрузить имя файла со специальными символами, используя libcurl

В удаленной системе она создала файл с HU98373 + TRRepr но не HU98373 + TRRepr # o4_201702061135_34. Я не знаю, почему он не учитывает символ «#»

Пожалуйста, проверьте приведенный ниже код.

remoteFileUrl = ftp://IPADRESS/HOME/HU98373+TRRepr#o4_201702061135_34.tmp/C20170206.1135-20170206.1140 

curl_easy_setopt(m_CurlSessionHandle, CURLOPT_URL, remoteFileUrl); 
         curl_easy_setopt(m_CurlSessionHandle, CURLOPT_UPLOAD, ON); 

         // Set the input local file handle 
         curl_easy_setopt(m_CurlSessionHandle, CURLOPT_READDATA, localFileHandle); 

         // Set on/off all wanted options 
         // Enable ftp data connection 
         curl_easy_setopt(m_CurlSessionHandle, CURLOPT_NOBODY, OFF); 

         // Create missing directory into FTP path 
         curl_easy_setopt(m_CurlSessionHandle, CURLOPT_FTP_CREATE_MISSING_DIRS , ON) ; 

         // Set the progress function, in oder to check the stop transfer request 
         curl_easy_setopt(m_CurlSessionHandle, CURLOPT_NOPROGRESS, OFF); 
         curl_easy_setopt(m_CurlSessionHandle, CURLOPT_PROGRESSFUNCTION, progressCb); 
         curl_easy_setopt(m_CurlSessionHandle, CURLOPT_PROGRESSDATA, this); 

         CURLcode curlOperationResult = curl_easy_perform(m_CurlSessionHandle); 

Может ли один помочь мне в этом

ответ

0

URL-адрес состоит из следующих частей:

scheme:[//[user:[email protected]]host[:port]][/]path[?query][#fragment] 

characeter # указывает фрагмент URL. Вы должны URL кодировать символ #, чтобы он не интерпретировался как разделитель фрагментов.

После кодирования сервер будет анализировать URL как ожидалось, и будет создано правильное имя файла.

следующий вопрос Потазывает, как сделать это в C++:

Encode/Decode URLs in C++

+0

удаленный файл URL: .. ... закодированный URL: ... получил код ошибки: 6, не удалось разрешить имя хоста ... не могли бы вы сообщите мне, как продолжить – rohit

+0

после кодирования url выше вызова libcurl с ошибкой: 6 Не удалось разрешить имя хоста – rohit

+0

i закодировано # до% 23, и я не касался оставшейся строки во время загрузки файла [сообщение], получил ошибка 18, Перенос частичного файл, сервер не сообщил об этом, получил 426 – rohit