1. 程式人生 > >Libcurl ftp Windows下使用實現下載刪除

Libcurl ftp Windows下使用實現下載刪除

1.下載最新版的libcurl,純淨版的,不要下載簡化版的,簡化版的,可能沒有winbuild檔案所以可能就會沒有Makefile.vc.我的是curl-7.44.0.zip,解壓,進入目錄winbuild,仔細閱讀BUILD.WINDOWS.txt這篇文件

開啟VS2013 開發人員命令提示並進入到winbuild檔案執行 nmake /f Makefile.vc mode=static<mode=static or dll> VC=12<對應的VS版本>

完成編譯後libcurl靜態庫會出現在builds目錄下包括標頭檔案和libcurl_a.lib,我們需要的是builds/libcurl-vc12-x86-release-static-ipv6-sspi-winssl下面的include和lib兩個資料夾.

struct FtpFile   //定義一個結構為了傳遞給my_fwrite函式.可用curl_easy_setopt的CURLOPT_WRITEDATA選項傳遞  
{
    char *filename;
    FILE *stream;
};

int my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
{
    struct FtpFile *out = (struct FtpFile *)stream; // stream指標其實就是指向struct FtpFile ftpfile的  
    if (out && !out->stream)
    {
        out->stream = fopen(out->filename, "wb"); //沒有這個流的話就建立一個名字是out->filename.   
        if (!out->stream)
            return -1;
    }
    return fwrite(buffer, size, nmemb, out->stream);
}

下載程式碼

CURL *curl;
    CURLcode res;
    char Pathdown[200] = {0};
    CString Dolwnpath = _T("");
    Dolwnpath = "D:/";
    Dolwnpath += FileName;
    strcpy(Pathdown, Dolwnpath);
    struct FtpFile ftpfile = {Pathdown, NULL }; //初始化一個FtpFile結構   
    curl_global_init(CURL_GLOBAL_DEFAULT);
    //XID8690_LoadLib();
    curl = curl_easy_init();
    CString addrInfo = _T("");
    logstrdlg.Empty();
    logstrdlg = "下載原始檔:";
    logstrdlg += FileName;
    //logstrdlg += "\r\n";
    ftp.IWriteLog(logstrdlg);
    logstrdlg.Empty();
    logstrdlg = "目標檔案:";
    logstrdlg += Dolwnpath;
    ftp.IWriteLog(logstrdlg);
    if (curl)
    {
        addrInfo = "ftp://192.168.1.6/";
        addrInfo += FileName; 
        curl_easy_setopt(curl, CURLOPT_URL, addrInfo);
        curl_easy_setopt(curl, CURLOPT_USERPWD, ":1234");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile); //給相關函式的第四個引數傳遞一個結構體的指標  
        curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);//CURLOPT_VERBOSE 這個選項很常用用來在螢幕上顯示對伺服器相關操作返回的資訊  

        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);

        if (CURLE_OK != res)
        {
            //fprintf(stderr, "curl told us %d\n", res);
            logstrdlg.Format("curl told us %d\n", res);
            ftp.IWriteLog(logstrdlg);
            return FALSE;
        }
        logstrdlg.Empty();
        logstrdlg.Format("curl told us %d\n", res);
        logstrdlg.Remove('\r');
        logstrdlg.Remove('\n');
        ftp.IWriteLog(logstrdlg);
    }
    if (ftpfile.stream)
        fclose(ftpfile.stream);
    curl_global_cleanup();

    return TRUE;

刪除程式碼:

CURL *curlhandle = NULL;
    CURL *curl = NULL;
    CURLcode res = CURLE_GOT_NOTHING;

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curlhandle = curl_easy_init();
    curl = curl_easy_init();
    if (curl) {
        CString cstrTemp = CString("DELE /") + CString(remotepath);
        CString cstrTemp1 = CString(IP);
        curl_easy_setopt(curl, CURLOPT_URL, cstrTemp1.GetBuffer());
        curl_easy_setopt(curl, CURLOPT_USERPWD, "x1:1234");
        cstrTemp1.ReleaseBuffer();
        struct curl_slist *headers = NULL;
        headers = curl_slist_append(headers, cstrTemp.GetBuffer());
        curl_easy_setopt(curl, CURLOPT_QUOTE, headers);
        cstrTemp.ReleaseBuffer();
        res = curl_easy_perform(curl);
        curl_slist_free_all(headers);
        curl_easy_cleanup(curlhandle);
        curl_easy_cleanup(curl);
        /*if (CURLE_OK != res) {
            char cTemp[128] = { 0 };
            sprintf(cTemp, "%s\n", curl_easy_strerror(res));
            OutputDebugString(cTemp);
            MessageBox(cTemp, "提示");
            return 0;
        }*/
    }

    curl_global_cleanup();
    return TRUE;

刪除時出現報23錯誤,還未找到原因,希望有人找出,雖然報錯,但是可以刪除

相關推薦

Libcurl ftp Windows使用實現下載刪除

1.下載最新版的libcurl,純淨版的,不要下載簡化版的,簡化版的,可能沒有winbuild檔案所以可能就會沒有Makefile.vc.我的是curl-7.44.0.zip,解壓,進入目錄winbuild,仔細閱讀BUILD.WINDOWS.txt這篇文件 開啟VS2

windows如何下載並安裝Python

.py back 版本號 eight word height win path lin 1.打開Python官網,點download中的windows(或者打開網址https://www.python.org/downloads/windows/) 2.下載exe後綴的可

windows實現linux的遠程訪問

你們 用戶名 成功 href get 新建 介紹 lan 優勢   在網絡性能、安全性、可管理性上,Linux有著其他系統無法比擬的強大優勢,而服務器對這些方面要求特別高,因此Linux常常被用來做服務器使用。而當我們需要維護linux服務器的時候,就需要遠程訪問linux

redis幾種模式的部署(Windows實現)

原文地址:https ://www.cnblogs.com/yu421/p/8081544.html <參考> http://www.cnblogs.com/ruiati/p/6374152.html 1.自行下載redis客戶端.redis官方不支援Windows系統,所以官網

WindowsMySQL下載安裝、配置與使用

一、下載 下載頁面http://dev.mysql.com/downloads/mysql/ 選擇系統平臺後,點選download(根據系統選擇64或32位)     二、配置 1、下載成功後,解壓安裝包到要安裝的位置,我是安裝在”D:\Progra

LiteIDE 在 Windows 實現go語言智慧提示程式碼補全

本文以 Windows 8、10 64 位為環境,go1.11.1.windows-amd64 和 liteidex27.2.1.windows-qt5 為例。 成功搭建開發環境後,發現 LiteIDE 沒有程式碼智慧提示,開發程式碼就特別麻煩~ 在 Github 下載 gocod

Windows實現mysql定時備份

1、寫MySQL備份bat處理 @echo off set "yMd=%date:~,4%%date:~5,2%%date:~8,2%" set "hms=%time:~,2%%time:~3,2%%time:~6,2%" "C:/Program Files (x86)/MySQL/MySQL

redis在windows下載和安裝,小白圖文

   ① 首先,需要在官網上下載32位redis軟體,進入官網點選導航選單中的【download】進入下載頁面,官方提供的是linux的下載,windows支援的下載在下方 “windows”版本。點選“這裡”     ②在頁面中部,看到readme.md 點選下圖

redis sentinel部署(Windows實現)

一、準備條件 1、作業系統:win7 2、redis版本:redis-2.8.19 二、下載redis並解壓 1、下載 由於redis官方並不支援windows作業系統,所以官網上是下不到的,需要到gitlab上下載,下載地址如下: https://github.co

windows實現mysql主從複製

MySQL的主從複製是通過binlog日誌來實現的,主從複製中的“主”指的是MySQL主伺服器上的資料庫,“從”指的是MySQL從伺服器上的資料庫,且這種複製是基於資料庫級別的,為此從伺服器中的資料庫名稱必須和主伺服器中的資料庫名稱保持一致,那麼,要想實現主從複製,我們至少要有兩個MySQL伺服器(

從零開始學caffe(九):在Windows實現影象識別

本系列文章主要介紹了在win10系統下caffe的安裝編譯,運用CPU和GPU完成簡單的小專案,文章之間具有一定延續性。 step1:準備資料集 資料集是進行深度學習的第一步,在這裡我們從以下五個連結中下載所需要的資料集: animal flower plane hou

Windows實現Django + Apache 部署

工具:Django1.11.6,Apache2.4.33Django專案地址:D:\picture第一步:下載與安裝Apache選擇對應電腦版本下載Apache2.4:下載地址我的是64位win7,所以下載的是第一個。下載完成之後解壓到資料夾,進入資料夾的 /Apache24

windows實現Linux的dirent.h API介面

將https://github.com/tronkko/dirent,下的include的dirent.h拷貝到當前工程的目錄下。 在這個工程中,將directory字串轉換為寬位元組的時候,如果目錄是漢字的時候會出現問題。 解決方法: #include <locale.h>

mysql在windows下載和安裝技巧

下載教程 https://jingyan.baidu.com/article/a3f121e4a6eb67fc9052bbf4.html 安裝連線教程: https://jingyan.baidu.com/article/a3f121e4a6eb67fc9052bbf4.html 下

windows實現tomcat監控並自動啟動服務

應用場景:  windows執行tomcat服務,為了避免系統崩潰導致出現無法提供服務的情況,我們通過編輯相應的bat指令碼,進行tomcat檢測。進而實現專案監控並自動重啟。  下面是一個實現tomcat監控並重啟的例子//echo off是批處理檔案中的命令,可以使得下面

windows實現win32俄羅斯方塊練手,程式設計的幾點心得

程式設計珠璣2閱讀筆記: 1.使用c語言效能監視器,完成對程式碼的調優工作 2.關聯陣列:  拓撲排序演算法,可以用於當存在遮擋的時候決定三維場景的繪製順序。 3.小型演算法中的測試與除錯工具 腳手架程式:《人月神話》一個軟體產品中應該有一半的程式碼都是腳手架。 類似

[目標檢測]windows實現c++版faster-rcnn

本版本根據windows下matlab版改寫而來。工程可到http://download.csdn.net/detail/oyangzi12/9692597 下載。程式預設使用GPU模式,如果沒有GPU只需在程式中將caffe設定為cpu模式。使用方法:1、配置opencv,

java ftp檔案上傳下載刪除

package ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStre

cool-2018-03-10-windows實現mysql5.6讀寫分離、主從複製和一主多從

mysql壓縮包移步下載:mysql5.6--主從資料庫的安裝第一步:複製mysql到自定義目錄中,我現在放的是 E:\cool\mysql,資料庫叫3380第二步: 刪除3380\logs目錄下的所有日誌檔案第三步驟: 刪除3380\datas所有的log檔案(注意不是所有

windows11g rac刪除新增節點

首先是刪:1 dbca刪節點 rac1,按提示刪除即可,其中需要輸入sys密碼crsctl unpin css -n rac12#執行完grid使用者檢視資源池,此時rac2已經不在serverpool裡,接下來繼續刪除cluster資訊srvctl config serverpoolcd /此處grid安裝