• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Error

            C++博客 首頁 新隨筆 聯系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

            官方文檔:

            FTP Custom Commands

            Not all protocols are HTTP-like, and thus the above may not help you when you want to make, for example, your FTP transfers to behave differently.

            Sending custom commands to a FTP server means that you need to send the commands exactly as the FTP server expects them (RFC 959 is a good guide here), and you can only use commands that work on the control-connection alone. All kinds of commands that require data interchange and thus need a data-connection must be left to libcurl's own judgement. Also be aware that libcurl will do its very best to change directory to the target directory before doing any transfer, so if you change directory (with CWD or similar) you might confuse libcurl and then it might not attempt to transfer the file in the correct remote directory.

            A little example that deletes a given file before an operation:

            headers = curl_slist_append(headers, "DELE file-to-remove");

            /* pass the list of custom commands to the handle */  curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers);

            curl_easy_perform(easyhandle); /* transfer ftp data! */

            curl_slist_free_all(headers); /* free the header list */

            If you would instead want this operation (or chain of operations) to happen _after_ the data transfer took place the option to curl_easy_setopt(3) would instead be called CURLOPT_POSTQUOTE and used the exact same way.

            The custom FTP command will be issued to the server in the same order they are added to the list, and if a command gets an error code returned back from the server, no more commands will be issued and libcurl will bail out with an error code (CURLE_QUOTE_ERROR). Note that if you use CURLOPT_QUOTE to send commands before a transfer, no transfer will actually take place when a quote command has failed.

            If you set the CURLOPT_HEADER to 1, you will tell libcurl to get information about the target file and output "headers" about it. The headers will be in "HTTP-style", looking like they do in HTTP.

            The option to enable headers or to run custom FTP commands may be useful to combine with CURLOPT_NOBODY. If this option is set, no actual file content transfer will be performed.

            FTP Custom CUSTOMREQUEST

            If you do want to list the contents of a FTP directory using your own defined FTP command, CURLOPT_CUSTOMREQUEST will do just that. "NLST" is the default one for listing directories but you're free to pass in your idea of a good alternative.

             

            中文:

            FTP自定義命令

            并不是所以的協議都像HTTP那樣,通過消息頭來告訴服務器如何處理請求。對于FTP,你就要使用另外的方式來處理。

            發送自定義的命令到ftp服務器,意味著你發送的命令必須是能被ftp服務器理解的命令(FTP協議中定義的命令,參考rfc959)。

            下面是一個簡單的例子,在文件傳輸操作操作之前刪除指定文件:

            headers = curl_slist_append(headers, "DELE file-to-remove"); /* pass the list of custom commands to the handle */ curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers); //curl_easy_setopt(easyhandle, CURLOPT_POSTQUOTE, headers); // 在數據傳輸之后操行刪除操作
            curl_easy_perform(easyhandle); /* transfer ftp data! */ curl_slist_free_all(headers); /* free the header list */

            FTP服務器執行命令的順序,同這些命令被添加到列表中順序是一致的。發往服務器的命令列表中,只要有一個命令執行失敗,ftp服務器就會返回一個錯誤代碼,此時libcurl將直接返回CURLE_QUOTE_ERROR,不再執行剩余的FTP命令。

            將CURLOPT_HEADER設置為1,libcurl獲取目標文件的信息,并以HTTP消息頭的樣式來輸出消息頭。

            FTP自定義CUSTOMREQUEST

            使用CURLOPT_CUSTOMREQUEST屬性,可以向FTP服務器發送命令。”NLST”是ftp默認的列出文件列表的命令。 下面的代碼用于列出FTP服務器上的文件列表:

            int main(int argc, char **argv) { curl_global_init(CURL_GLOBAL_WIN32); CURL *easy_handle = curl_easy_init(); curl_easy_setopt(easy_handle, CURLOPT_URL, "ftp://127.0.0.1/");curl_easy_setopt(easy_handle, CURLOPT_CUSTOMREQUEST, "NLST");
            curl_easy_perform(easy_handle); curl_easy_cleanup(easy_handle); curl_global_cleanup(); return 0; }
            posted on 2012-06-29 00:14 Enic 閱讀(595) 評論(0)  編輯 收藏 引用
            久久天天躁狠狠躁夜夜躁2O2O| 久久免费看黄a级毛片| 久久91亚洲人成电影网站| 久久综合九色综合97_久久久| 久久无码一区二区三区少妇 | 国产精品一区二区久久国产| 国产91久久精品一区二区| 狠狠色丁香婷婷久久综合| 久久99精品综合国产首页| 亚洲精品无码久久不卡| 7国产欧美日韩综合天堂中文久久久久 | 精品免费久久久久国产一区| 性欧美大战久久久久久久久| Xx性欧美肥妇精品久久久久久| 久久人人爽人人爽人人爽| 国产精品成人久久久久三级午夜电影| 久久人人爽人人爽人人片AV不| 国产精品成人99久久久久 | 久久久久女教师免费一区| 国产成人综合久久综合| 久久久久人妻一区二区三区vr| 中文字幕无码久久人妻| 久久99精品国产麻豆婷婷| 99久久国产综合精品成人影院| 999久久久无码国产精品| 久久久久亚洲精品无码蜜桃| 色婷婷综合久久久久中文一区二区 | 色偷偷偷久久伊人大杳蕉| 久久精品中文字幕一区| 中文字幕无码av激情不卡久久| 欧美日韩成人精品久久久免费看| 中文字幕一区二区三区久久网站 | 久久久久久A亚洲欧洲AV冫| 人人狠狠综合久久亚洲婷婷| 久久综合九色综合久99| 亚洲欧美精品伊人久久| 久久WWW免费人成—看片| 久久综合久久性久99毛片| 国内精品伊人久久久久网站| 久久久久国色AV免费看图片| 一本色道久久综合|