2014-02-24 73 views
1

我一直在尋找2個小時,我似乎無法弄清楚如何簡單地上傳文件與FTP服務器。C++使用WinINet上傳到FTP服務器

我寧願使用的WinINet,因爲我是新的C++和Microsoft Visual Studio(我不是新的節目,只是C++)

我真正需要的是如何工作的例子用FTP服務器上傳文件。過去2個小時我一直在網上,我找不到任何東西。

我已經嘗試了很多不同的庫和東西,但似乎沒有工作,並且很多都過時了。

無論如何,如果您想分享您的知識,鏈接或使用FTP上傳C++文件的經驗,我會非常感激。

Thanks -Alex Benoit

+0

代碼中看到http://msdn.microsoft.com/en-us/library/windows/desktop/aa384180%28v=vs.85%29.aspx爲大量的示例代碼(這不難發現) – deviantfan

+0

我一直在那裏。我已經瀏覽了大約200個不同的頁面。我已經閱讀了很多。我似乎正在做正確的事情,但有很多方法,以及許多不同的可能的錯誤。 –

+0

如果你的意思是可能的運行時錯誤(而不是編程錯誤):是的,沒有不同的例子可以解決這個問題。整個Winapi的大部分都是按照每個命令有大約100(至少「很多」)不同的可能錯誤的方式來設計的。關於編程錯誤:如果代碼太混亂,在同一個網站上有圖表,顯示您需要的核心功能的名稱,順序等。剩下的就是閱讀這個函數的文檔來查找可能的參數,返回值等。 – deviantfan

回答

2

想通了。下面是我使用

#include <wininet.h> 
#pragma comment(lib, "Wininet") 
void FileSubmit() 
    { 
     HINTERNET hInternet; 
     HINTERNET hFtpSession; 
     hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 
     if (hInternet == NULL) 
     { 
      cout << "Error: " << GetLastError(); 
     } 
     else 
     { 
      hFtpSession = InternetConnect(hInternet, "server", INTERNET_DEFAULT_FTP_PORT, "user", "pass", INTERNET_SERVICE_FTP, 0, 0); 
      if (hFtpSession == NULL) 
      { 
       cout << "Error: " << GetLastError(); 
      } 
      else 
      { 
       if (!FtpPutFile(hFtpSession, "C://file.txt", "/file.txt", FTP_TRANSFER_TYPE_BINARY, 0)) 
       { 
        cout << "Error: " << GetLastError(); 
       } 
      } 
     } 
    } 
+0

這可能在Windows 7或更低版​​本中不起作用。 WinINet存在問題。我相信它實際上已經修復了Windows 8.1的最後一晚更新,但這只是Windows 8.1的修復,不幸的是Windows 7也不是。 –

+0

什麼問題?我找到了你的答案,並計劃使用它! –