程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> FTP斷點續傳

FTP斷點續傳

編輯:C++入門知識

花了一天的時間整出來這點東西,寫一下吧!

[cpp] 
VOID FtpThief::Connect(TCHAR*IP,TCHAR*USER,TCHAR*PASS,UINT PORT)  

    pInternetSession = new CInternetSession("MR",INTERNET_OPEN_TYPE_PRECONFIG); 
    try 
    { 
        pFtpConnection = pInternetSession->GetFtpConnection(IP,USER,PASS,PORT); 
        pFtpConnection->CreateDirectory("web\\uploadfile");   
 
        bconnect=TRUE; 
    }catch(CInternetException* pEx) 
    { 
        TCHAR szErr[1024]; 
        pEx->GetErrorMessage(szErr, 1024); 
        printf("錯誤:%s\n",szErr); 
        pEx->Delete(); 
    } 
 

 
//獲取FTP上文件大小 
 LONGLONG  FtpThief::GetFtpFileSize(CFtpConnection* pFtpCon, CString strFtpFile) 

     CFtpFileFind   ftpFind(pFtpCon);  
     LONGLONG filelen = 0; 
     if(ftpFind.FindFile(strFtpFile))  
     {  
     ftpFind.FindNextFile();  
     filelen =   ftpFind.GetLength();  
     }  
     ftpFind.Close();  
     return filelen; 
}  
 
 //斷點續傳 
bool FtpThief::FtpTransProc(TCHAR*FilePath,TCHAR*FileName) 

    CString m_ftpPath = FileName; 
    CFile localFile; 
    DWORD nRet = localFile.Open(FilePath,CFile::modeRead|CFile::shareDenyRead); 
 
    if(!nRet) 
    { 
        OutputDebugString("open file error"); 
        return false; 
    } 
    //獲取文件大小,設置續傳文件的位置 
    long long llFileBegin; 
    llFileBegin = GetFtpFileSize(pFtpConnection,m_ftpPath); 
    localFile.Seek(llFileBegin,CFile::begin); 
 
    ///pFtpConnection->CreateDirectory(m_ftpPath);   
    //是指路徑:如FTP://file1/file2.rar 則是"file1//file2.rar" 
     
    CInternetFile *pInetFile = NULL; 
    pInetFile=pFtpConnection->Command("APPE " +m_ftpPath,CFtpConnection::CmdRespWrite); 
    DWORD len; 
    long long m_nFileTransSize = 0; 
    char buffer[MAX_PATH*1024*2] = {0}; 
    DWORD nBufSize = MAX_PATH*1024*2; 
    //讀寫文件  www.2cto.com
    while(len=localFile.Read(buffer,nBufSize)) 
    { 
        pInetFile->Write(buffer,len); 
        m_nFileTransSize += len; 
    } 
    localFile.Close(); 
    return true; 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved