使用libcurl實現的上傳器
阿新 • • 發佈:2018-12-27
{
// 遠端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;
}
// 遠端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_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,
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,
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;
}