1. 程式人生 > >使用libcurl實現的上傳器

使用libcurl實現的上傳器

{
    
// 遠端URL,支援 http, https, ftp
    curl_easy_setopt(m_pCurl, CURLOPT_URL, m_strRemoteUrl.c_str());

    curl_easy_setopt(m_pCurl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)m_nLocalFileSize);

    
// 設定User-Agent
    std::string useragent = _T("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1");
    curl_easy_setopt(m_pCurl, CURLOPT_USERAGENT, useragent.c_str());

    
// 設定重定向的最大次數
    curl_easy_setopt(m_pCurl, CURLOPT_MAXREDIRS, 5);

    
// 設定301、302跳轉跟隨location
    curl_easy_setopt(m_pCurl, CURLOPT_FOLLOWLOCATION, 1);

    curl_easy_setopt(m_pCurl, CURLOPT_UPLOAD, TRUE);

    curl_easy_setopt(m_pCurl, CURLOPT_NOSIGNAL, 
1L);
    curl_easy_setopt(m_pCurl, CURLOPT_POST, TRUE);
    curl_easy_setopt(m_pCurl, CURLOPT_FORBID_REUSE, TRUE);

    
// 上傳內容回撥函式
    curl_easy_setopt(m_pCurl, CURLOPT_READFUNCTION, handleRead);
    curl_easy_setopt(m_pCurl, CURLOPT_READDATA, 
this);

    
// 進度回撥函式
    curl_easy_setopt(m_pCurl, CURLOPT_NOPROGRESS, 
0);
    curl_easy_setopt(m_pCurl, CURLOPT_PROGRESSDATA, 
this);
    curl_easy_setopt(m_pCurl, CURLOPT_PROGRESSFUNCTION, handleProgress);

    
// 跳過伺服器SSL驗證,不使用CA證書
    curl_easy_setopt(m_pCurl, CURLOPT_SSL_VERIFYPEER, 0L);

    
// 驗證伺服器端傳送的證書,預設是 2(高),1(中),0(禁用)
    curl_easy_setopt(m_pCurl, CURLOPT_SSL_VERIFYHOST, 0L);

    
returntrue;
}