[問題] **已解決** MFC FTP的GetFile()無法更新

看板C_and_CPP作者 (幹!我是肌董)時間9年前 (2014/11/07 12:01), 9年前編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) MFC 問題(Question): 各位版友好! 最近在試著使用MFC裡的CFtpConnection類別來使用FTP Client端功能 但在使用下載檔案的CFtpConnection::GetFile卻發現了一個問題 在執行程式時 第一次使用 檔案可以正確下載 但如果Server端檔案內容有修改後 再按下載 產生的檔案卻還是第一次所下載的舊內容@@ 更誇張的是 就算直接把Server端檔案砍掉 在Client端再按一次下載 還是會下載東西下來= = 其內容也為第一次所下載的檔案內容Orz 整個誤動作... *****************************已解決******************************** 謝謝serikafan大的熱心協助 幫我找出問題! 在此小整理一下 給碰到相同問題的版友! 原來是cache(快取?)在搞鬼! 下載第一次後 就將該資訊存在Client端的cache裡 再次下載時 由於沒有比對機制判斷是否是內容有更新 所以實際上還是從cache裡抓資訊來給我 所以需要加入比對機制! GetFile()的參數:dwFlags 需要再加入INTERNET_FLAG_RELOAD(每次都重新下載Server端檔案) 或 INTERNET_FLAG_RESYNCHRONIZE(如果Server端檔案有更新則下載) 二者都可以 依需求而定@@ ******************************************************************* 下面的程式碼有加入修改後的code main code: CInternetSession *InternetSession; CFtpConnection *m_pFtpConnection; void CFTP_testDlg::OnBnClickedButtonConnect() { CString sServerIP, sUser, sPassword; sServerIP=_T("192.168.7.123"); sUser=_T("kobe"); sPassword=_T("kobe"); InternetSession = new CInternetSession(_T("My Ftp Session")); m_pFtpConnection = InternetSession->GetFtpConnection(sServerIP,sUser,sPassword,21,true); //Passive FTP } void CFTP_testDlg::OnBnClickedButtonGetFile() { bool bGetFile=false; //原本無法更新的指令: //bGetFile=m_pFtpConnection->GetFile(_T("Server.ini") // ,_T(".//Download.ini"),false); //修改後 可以更新的指令: bGetFile=m_pFtpConnection->GetFile(_T("RemoteSetting//Server.ini") ,_T(".//Server.ini") ,false ,FILE_ATTRIBUTE_NORMAL ,FTP_TRANSFER_TYPE_BINARY|INTERNET_FLAG_RELOAD ); if(bGetFile) MessageBox(_T("Download Succeed!"),_T("Info"), MB_OK); else MessageBox(_T("Download Fail!"),_T("Info"), MB_OK); } 另外 在code裡使用bGetFile來判斷是否可下載檔案 在程式第一次執行時 一樣可正常動作 (Server端檔案存在 bGetFile就會顯示true 否則為flase) 但下載過一次後 就算把Server端檔案刪去 按下載 bGetFile還是會顯示true... 一直找不出問題在哪>_< 希望有使用過此功能的熱心版友能提供點建議 謝謝您的協助!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.212.97 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1415332912.A.241.html

11/07 12:08, , 1F
dwFlags參數加上INTERNET_FLAG_RELOAD或
11/07 12:08, 1F

11/07 12:08, , 2F
INTERNET_FLAG_RESYNCHRONIZE,參閱http://0rz.tw/OBCKh
11/07 12:08, 2F
※ 編輯: srxrrr (211.72.212.97), 11/07/2014 14:49:10 ※ 編輯: srxrrr (211.72.212.97), 11/07/2014 15:03:06

11/07 15:04, , 3F
謝謝serikafan大的協助!! 完全解決了我的疑惑^_^
11/07 15:04, 3F
文章代碼(AID): #1KN4Gm91 (C_and_CPP)