当前位置:编程学习 > C/C++ >>

FTP断点续传

花了一天的时间整出来这点东西,写一下吧!

[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.zzzyk.com
    while(len=localFile.Read(buffer,nBufSize)) 
    { 
        pInetFile->Write(buffer,len); 
        m_nFileTransSize += len; 
    } 
    localFile.Close(); 
    return true; 

 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,