C++ 使用libcurl创建新目录

C++ 使用libcurl创建新目录,c++,ftp,libcurl,C++,Ftp,Libcurl,我一直在修补libcurl,到目前为止它还不错。我有几件事让我很困惑。我需要为远程服务器创建一个目录,这里有一些问题 我在URL中传递什么?它是根URL还是完整目录 我希望在创建目录时产生连锁反应,也就是说,如果我有diectory/abc/def/ghi,那么如果它们不存在,就应该创建它们。我已经尝试了CURLOPT_FTP_CREATE_MISSING_Dir,但不起作用 它失败了,我不能确定原因。下面是应用程序的相关代码和日志 代码 日志 确保路径的格式为/public\u html/so

我一直在修补libcurl,到目前为止它还不错。我有几件事让我很困惑。我需要为远程服务器创建一个目录,这里有一些问题

  • 我在URL中传递什么?它是根URL还是完整目录

  • 我希望在创建目录时产生连锁反应,也就是说,如果我有diectory/abc/def/ghi,那么如果它们不存在,就应该创建它们。我已经尝试了CURLOPT_FTP_CREATE_MISSING_Dir,但不起作用

  • 它失败了,我不能确定原因。下面是应用程序的相关代码和日志

  • 代码

    日志


    确保路径的格式为/public\u html/somedir,而不是

    这就是我的代码出错的原因。所以我通过删除URL解决了这个问题。我认为应该有一个关于libcurl的部分来解释预期的URL格式。一旦我完全掌握了它,我将为此做出贡献

    CURL* handle = curl_easy_init();
    
    SetHandleOptions(handle); //set options
    
    CURLcode res;
    wxString uploadUrl =....;//full URL with path like ftp.xyz.com/public_html/dir1/
    wxString command1 = "MKD "+uploadUrl;
    wxString command2 = "CWD "+uploadUrl;
    struct curl_slist *headers = NULL;
    headers = curl_slist_append(headers, command1.c_str());
    headers = curl_slist_append(headers, command2.c_str());
    curl_easy_setopt(handle, CURLOPT_QUOTE, headers);
    const char* uploadUrlStr = uploadUrl.c_str();
    
    if(handle)
    {
        //do file upload here
        /* upload to this place */
        curl_easy_setopt(handle, CURLOPT_URL, uploadUrlStr);
        /* enable verbose for easier tracing */
        curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L);
        curl_easy_setopt(handle, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);
        curl_easy_setopt(handle, CURLOPT_QUOTE, headers);
    
        res = curl_easy_perform(handle);
    
        if(res==CURLE_OK)
        {
            SendMessage(_("Successfully Created Directory: ")+uploadUrl, HERROR_TYPE_WARNING);
        }
        else
        {
            //send error message
            wxString str(curl_easy_strerror(res));
            SendMessage(str);
        }
        /* always cleanup */
        curl_easy_cleanup(handle);
    
    }
    else
    {
        SendMessage(_("Could Not Connect to Server: Invalid Handle"), HERROR_TYPE_CRITICAL);
    }
    
    curl_slist_free_all(headers);
    
    ----------Wed Dec 18 01:33:15 2013---------- 
    Changing Directory to / [01:33:20]
    Successfully logged In [01:33:21]
    No error [01:33:24]
    Starting Files List Fetching... [01:33:24]
    No error [01:33:26]
     [01:33:32]
    IDN support not present, can't parse Unicode domains
     [01:33:32]
    About to connect() to ftp.hosanna.site40.net port 21 (#2)
     [01:33:33]
      Trying 31.170.162.203...
     [01:33:33]
    Adding handle: conn: 0x7fffd0013110
     [01:33:33]
    Adding handle: send: 0
     [01:33:33]
    Adding handle: recv: 0
     [01:33:33]
    Curl_addHandleToPipeline: length: 1
     [01:33:33]
    - Conn 2 (0x7fffd0013110) send_pipe: 1, recv_pipe: 0
     [01:33:33]
     [01:33:33]
     [01:33:33]
    Closing connection 3
     [01:33:33]
    Couldn't resolve host name [01:33:33]
    Connected to ftp.hosanna.site40.net (31.170.162.203) port 21 (#2)
     [01:33:34]
    220---------- Welcome to Pure-FTPd [privsep] ----------
    220-You are user number 9 of 500 allowed.
    220-Local time is now 17:33. Server port: 21.
    220-This is a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:35]
    220-You are user number 9 of 500 allowed.
    220-Local time is now 17:33. Server port: 21.
    220-This is a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:35]
    220-Local time is now 17:33. Server port: 21.
    220-This is a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:35]
    220-This is a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:35]
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:35]
    USER xxxxxx
     [01:33:35]
    331 User xxxxxx OK. Password required
    tes of inactivity.
    -You are user number 9 of 500 allowed.
    220-Local time is now 17:33. Server port: 21.
    220-This is a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:35]
    PASS xxxxxx
     [01:33:35]
    230-OK. Current restricted directory is /
    230-124 files used (1%) - authorized: 10000 files
    230 3051 Kbytes used (0%) - authorized: 1536000 Kb
    
    220-This is a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:36]
    230-124 files used (1%) - authorized: 10000 files
    230 3051 Kbytes used (0%) - authorized: 1536000 Kb
    
    220-This is a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:36]
    230 3051 Kbytes used (0%) - authorized: 1536000 Kb
    
    220-This is a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:36]
    PWD
     [01:33:36]
    257 "/" is your current location
    ized: 1536000 Kb
    files used (1%) - authorized: 10000 files
    230 3051 Kbytes used (0%) - authorized: 1536000 Kb
     [01:33:37]
    Entry path is '/'
     [01:33:37]
    MKD ftp://ftp.hosanna.site40.net/public_html/Zulu names and meanings
     [01:33:37]
    ftp_perform ends with SECONDARY: 0
     [01:33:37]
    550-Can't create directory: No such file or directory
    550-124 files used (1%) - authorized: 10000 files
    550 3051 Kbytes used (0%) - authorized: 1536000 Kb
     a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:37]
    550-124 files used (1%) - authorized: 10000 files
    550 3051 Kbytes used (0%) - authorized: 1536000 Kb
     a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:37]
    550 3051 Kbytes used (0%) - authorized: 1536000 Kb
     a private system - No anonymous login
    220 You will be disconnected after 3 minutes of inactivity.
     [01:33:37]
    QUOT command failed with 550
     [01:33:37]
    Closing connection 2
     [01:33:37]
    Quote command returned error [01:33:37]