• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 126,  comments - 73,  trackbacks - 0

            沒(méi)什么技術(shù)難度.僅存之以備后用.


            //////////////////////////////////////////////////////////////////////////////////
            //DownLoadFile?????????????????//
            //功能:下載指定文件????????????????//
            //參數(shù)說(shuō)明:??????????????????//
            //ftpurl:??Ftp鏈接地址??????????????//
            //acc:???登陸ftp的帳號(hào)?????????????//
            //psw:???登陸ftp的密碼?????????????//
            //farfilename:?要下載的遠(yuǎn)程文件????????????//
            //localpath:?本地用于保存文件的目錄???????????//
            //說(shuō)明:指定文件要包含路徑和文件名,路徑中請(qǐng)使用"\\",不要用"/"做為分割符???//
            //////////////////////////////////////////////////////////////////////////////////.
            bool CFtpTestDlg::DownLoadFile(char *ftpurl, char * acc,
            ?????char * psw, char * farfilename, char * localpath)
            {
            ?//創(chuàng)建InternNet會(huì)話
            ?CInternetSession sess(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);

            ?CFtpConnection* pConnect = NULL;?
            ?CFtpFileFind *pftpfinder;
            ?try
            ?{
            ??//CString m_strFtpSite = "192.168.0.60";
            ??pConnect = sess.GetFtpConnection(ftpurl,acc,psw);
            ??pftpfinder = new CFtpFileFind(pConnect);

            ??BOOL bWorking = pftpfinder->FindFile(farfilename);
            ??if(bWorking)
            ??{
            ???CString localfilename(localpath);
            ???if(localfilename.Right(1)!="\\")
            ????localfilename += "\\";
            ???localfilename += ::PathFindFileName(farfilename);

            ???if(!pConnect->GetFile(farfilename,localfilename,0))
            ???{
            ????CString buf;
            ????buf.Format("下載文件出錯(cuò);filename:%s,curlocaldir:%s",farfilename,localfilename);
            ????Log(buf.GetBuffer());
            ???}
            ???
            ??}
            ?//?LoopDownloadDir(pConnect,pftpfinder,farpath);

            ?}
            ?catch (CInternetException* pEx)
            ?{
            ??TCHAR sz[1024];
            ??pEx->GetErrorMessage(sz, 1024);
            ??printf("ERROR!? %s\n", sz);
            ??pEx->Delete();
            ?}

            ?if(pftpfinder)
            ??delete pftpfinder;

            ?return true;

            }


            //////////////////////////////////////////////////////////////////////////////////
            //DownLoadAllDirFile???????????????//
            //功能:下載指定文件夾下的內(nèi)容?????????????//
            //參數(shù)說(shuō)明:??????????????????//
            //ftpurl:?Ftp鏈接地址???????????????//
            //acc:??登陸ftp的帳號(hào)??????????????//
            //psw:??登陸ftp的密碼??????????????//
            //farpath:?要下載的遠(yuǎn)程目錄?????????????//
            //localpath:本地用于保存文件的目錄????????????//
            //////////////////////////////////////////////////////////////////////////////////.
            bool CFtpTestDlg::DownLoadAllDirFile(char *ftpurl, ?????????
            ??char * acc, char * psw, char * farpath, char * localpath)
            {
            ?//記錄本地文件夾和要下載的遠(yuǎn)程文件夾
            ?m_strLocalDir = localpath;
            ?m_strFarDir = farpath;

            ?//創(chuàng)建InternNet會(huì)話
            ?CInternetSession sess(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);

            ?CFtpConnection* pConnect = NULL;?
            ?CFtpFileFind *pftpfinder;
            ?try
            ?{
            ??//CString m_strFtpSite = "192.168.0.60";
            ??pConnect = sess.GetFtpConnection(ftpurl,acc,psw);
            ??pftpfinder = new CFtpFileFind(pConnect);
            ??LoopDownloadDir(pConnect,pftpfinder,farpath);

            ?}
            ?catch (CInternetException* pEx)
            ?{
            ??TCHAR sz[1024];
            ??pEx->GetErrorMessage(sz, 1024);
            ??printf("ERROR!? %s\n", sz);
            ??pEx->Delete();
            ?}

            ?if(pftpfinder)
            ??delete pftpfinder;

            ?return true;

            }
            //////////////////////////////////////////////////////////////////////////////////
            //LoopDownloadDir()?????? ??????????//
            //功能:遞歸下載目錄內(nèi)容????? ??????????//
            //參數(shù)說(shuō)明:???????? ??????????//
            //pConnect:??Ftp鏈接指針???? ??????????//
            //pftpfinder:?ftp文件查找指針??? ??????????//
            //dirpath:??遞歸目錄???? ??????????//
            //////////////////////////////////////////////////////////////////////////////////.
            bool CFtpTestDlg::LoopDownloadDir(CFtpConnection* pConnect,
            ?????CFtpFileFind * pftpfinder,char * dirpath)
            {
            ?//當(dāng)前本地文件夾
            ?CString curlocaldir = m_strLocalDir;
            ?CString strbuf(dirpath);
            ?CString strbuf2 = strbuf.Right(strbuf.GetLength()-m_strFarDir.GetLength());
            ?if(strbuf2.Left(1) == "\\")??//去除最左邊的"\\"
            ??strbuf2 =strbuf2.Right(strbuf2.GetLength()-1);
            ?curlocaldir = m_strLocalDir;
            ?if(curlocaldir.Right(1) != "\\")
            ??curlocaldir += "\\";
            ?curlocaldir += strbuf2;

            ?////但前遠(yuǎn)程文件夾
            ?//CString curfardir = m_strFarDir;
            ?//if(m_strFarDir.Right(1) != "\\")
            ?//?m_strFarDir+="\\";
            ?//curfardir += dirpath;


            ?//if(strlen(dirpath))
            ?//?curlocaldir= m_strLocalDir + "\\" + dirpath;


            ?//查找任意文件
            ?CString allfile(dirpath);
            ?if(allfile.Right(1) != "\\")
            ??allfile += _T("\\");
            ?allfile += "*.*";
            ?BOOL bWorking = pftpfinder->FindFile(allfile);
            ?while(bWorking)
            ?{
            ??bWorking = pftpfinder->FindNextFile();
            ??CString filename = pftpfinder->GetFileName();
            ??Log("filename:%s",filename.GetBuffer());
            ??if(!pftpfinder->IsDirectory())?//文件,下載
            ??{
            ???Log("File :%s",filename.GetBuffer());
            ???//遠(yuǎn)程文件全名=遠(yuǎn)程目錄+"\\"+文件名稱
            ???CString farfilename(dirpath);
            ???if(farfilename.Right(1) != "\\")
            ????farfilename+="\\";
            ???farfilename += filename;
            ???//當(dāng)?shù)匚募?當(dāng)?shù)啬夸?"\\"+文件名稱
            ???CString localfilename=curlocaldir ;
            ???if(localfilename.Right(1) != "\\")
            ????localfilename+="\\";
            ???localfilename += filename;
            ???if(!pConnect->GetFile(farfilename,localfilename,0))
            ???{
            ????CString buf;
            ????buf.Format("下載文件出錯(cuò);filename:%s,curlocaldir:%s",filename,curlocaldir);
            ????Log(buf.GetBuffer());
            ???}
            ??}
            ??else if(!pftpfinder->IsDots())?//子目錄,遞歸下載
            ??{
            ???//定位當(dāng)?shù)刈游募A
            ???CString localsubdir = curlocaldir;
            ???if(localsubdir.Right(1) != "\\")
            ????localsubdir+="\\";
            ???localsubdir += filename;
            ???//定位遠(yuǎn)程子文件夾
            ???CString farsubdir = dirpath;
            ???if(farsubdir.Right(1) != "\\")
            ????farsubdir+="\\";
            ???farsubdir += filename;

            ???//查找并添加本地文件夾
            ???CFileFind?? finder;??
            ???if(finder.FindFile(localsubdir)==FALSE)??
            ???{??
            ????if(!CreateDirectory(localsubdir,NULL))
            ?????Log("Create dir flase! :%s",localsubdir);
            ???}??
            ???finder.Close();

            ???Log("Dir? :%s",localsubdir.GetBuffer());
            ??????????? LoopDownloadDir(pConnect,pftpfinder,farsubdir.GetBuffer());
            ???bool bfint = pftpfinder->FindFile(allfile);
            ???//重新定位本層查找????//這里應(yīng)該有更好的實(shí)現(xiàn)方法
            ???while(bfint)
            ???{
            ????bfint = pftpfinder->FindNextFile();
            ????if(pftpfinder->GetFileName() == filename)
            ?????break;
            ???}
            ??}
            ?}
            ?return true;
            }

            posted on 2007-01-15 13:29 我風(fēng) 閱讀(3319) 評(píng)論(2)  編輯 收藏 引用

            FeedBack:
            # re: ftp下載實(shí)現(xiàn)
            2011-02-26 00:02 | masmo
            不錯(cuò)!借鑒了!多謝博主同學(xué):P  回復(fù)  更多評(píng)論
              
            # re: ftp下載實(shí)現(xiàn)
            2012-10-19 11:00 | olive
            但是不知怎么回事,總會(huì)在getFile函數(shù)時(shí)卡死,最后下載不成功。測(cè)試程序都是好的,一旦放到工程中就不行了  回復(fù)  更多評(píng)論
              

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2010年4月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            收藏夾

            C++

            MyFavorite

            搜索

            •  

            積分與排名

            • 積分 - 327092
            • 排名 - 75

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久99国产精品尤物| 久久人妻少妇嫩草AV无码蜜桃| 久久婷婷五月综合成人D啪| 国产AV影片久久久久久| 中文字幕热久久久久久久| 免费观看久久精彩视频| 香蕉久久夜色精品国产尤物| 久久精品国产亚洲精品2020| 久久久久人妻一区精品果冻| 国内精品伊人久久久久AV影院| 国产一级做a爰片久久毛片| 久久成人国产精品免费软件| 日本久久久久久中文字幕| 国内精品免费久久影院| 精品久久一区二区| 色天使久久综合网天天| 久久高潮一级毛片免费| 亚洲AV成人无码久久精品老人| 色综合久久88色综合天天 | 久久水蜜桃亚洲av无码精品麻豆| 久久这里只精品99re66| 久久久久国产一级毛片高清版| 精品久久人人做人人爽综合| 久久亚洲AV成人无码国产| 久久久免费观成人影院 | 久久亚洲精品无码VA大香大香| 国内精品伊人久久久久网站| 久久人妻少妇嫩草AV无码专区| 久久久久久亚洲精品不卡| 久久亚洲国产精品一区二区| 国产亚洲精品美女久久久| 久久亚洲精品无码aⅴ大香| 久久婷婷五月综合97色直播| 久久精品中文字幕有码| 色偷偷888欧美精品久久久| 精品综合久久久久久97超人| 久久人人爽人人爽人人片AV不| 久久狠狠爱亚洲综合影院| 青春久久| 久久妇女高潮几次MBA| 成人久久免费网站|