FtpPutFile < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 08:13 Di 10.02.2009 | Autor: | Sir_Knum |
Hallo,
ich möchte von einem lokalen Verzeichnis eine Datei auf einen Server hochladen. Bekomme aber als Fehler von GetLastError 6 The handle is invalid.
transfer.cpp
1: | testupload::testupload(void)
| 2: | {
| 3: | Connect();
| 4: | CFtpConnection* connection_pointer;
| 5: | connection_pointer=Connect::getLastConnection();
| 6: | if(connection_pointer->SetCurrentDirectory(_T("automatic/get_bu")))
| 7: | {
| 8: | cout<<"Verzeichnis wurde mit Erfolg! gewechselt\n";
| 9: | bool a;
| 10: | a=FtpPutFile(connection_pointer, _T("C:/CPlusPlus/TxtTransfer/newbu.txt"), _T("automatic/get_bu/newbu.txt"), INTERNET_FLAG_TRANSFER_BINARY, 0);
| 11: | cout << GetLastError() << a;
| 12: | }
| 13: |
| 14: | else
| 15: | {
| 16: |
| 17: | DWORD dwInfo = 0;
| 18: | TCHAR puffer[250] = _T("");
| 19: | DWORD dwSize = sizeof(puffer) / sizeof(TCHAR);
| 20: | if( !InternetGetLastResponseInfo(&dwInfo, puffer, &dwSize) )
| 21: | {
| 22: | cout << GetLastError();
| 23: | cout << "Aufruf InternetGetLastResponseInfo nicht erfolgreich";
| 24: | }
| 25: | //Fehlerbehandlung falls InternetGetLastResponseInfo nicht aufgerufen werden konnte
| 26: | else
| 27: | {
| 28: | wcout << puffer;
| 29: | cout << "Aufruf InternetGetLastResponseInfo erfolgreich";
| 30: | }
| 31: |
| 32: |
| 33: | }
| 34: | } |
Connect.cpp
1: | FtpConnection* Connect::connection_pointer=NULL;
| 2: | CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY ,
| 3: | (_T( "proxy")), NULL, 0);
| 4: |
| 5: | Connect::Connect(void)
| 6: | {
| 7: |
| 8: | //Objekt session wird erzeugt
| 9: |
| 10: | //Zeiger auf CFtpConnection
| 11: | CFtpConnection *connection;
| 12: | //Objekt der Klasse read_serverlist wird erzeugt
| 13: | read_serverlist LeseListe;
| 14: |
| 15: | LPCTSTR pstrServer = _T("proxy");
| 16: | INTERNET_PORT port = 21;
| 17: | BOOL bPassive = TRUE;
| 18: |
| 19: |
| 20: | try
| 21: | {
| 22: |
| 23: | //FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt,
| 24: | //connection wird auf zurückgegeben Zeiger gesetzt
| 25: | if(connection = session.GetFtpConnection(pstrServer, LeseListe.servername, LeseListe.password, port, bPassive))
| 26: | {
| 27: | cout << "Verbindung wurde aufgebaut\n";
| 28: | connection_pointer=connection;
| 29: | }
| 30: |
| 31: | }
| 32: | //Fehleroutine
| 33: | catch (CInternetException* pEx)
| 34: | {
| 35: | cout<<"FEHLER : "<<GetLastError()<<endl;
| 36: | TCHAR sz[1024];
| 37: | pEx->GetErrorMessage(sz, 1024);
| 38: | printf_s("ERROR! %S\n", sz);
| 39: | pEx->Delete();
| 40: | }
| 41: |
| 42: |
| 43: | }
| 44: | CFtpConnection * Connect::getLastConnection()
| 45: | {
| 46: | return connection_pointer;
| 47: | } |
Wäre froh, wenn sich jemand nicht vom langen Code abschrecken lässt und sagen kann wo mein Fehler liegen könnte. Ich benutze VisualStudio und programmiere in C++
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:10 Di 10.02.2009 | Autor: | Sir_Knum |
Morgen,
das Problem hat sich erledigt. Wenn ich Putfile benutze funktioniert es.
testuptload.cpp
1: | testupload::testupload(void)
| 2: | {
| 3: | Connect();
| 4: | CFtpConnection* connection_pointer;
| 5: | connection_pointer=Connect::getLastConnection();
| 6: | /*if(connection_pointer->SetCurrentDirectory(_T("automatic/get_bu")))
| 7: | {
| 8: | cout<<"Verzeichnis wurde mit Erfolg! gewechselt\n";*/
| 9: | bool a;
| 10: | a=connection_pointer->PutFile( _T("C:/CPlusPlus/TxtTransfer/newbu.txt"), _T("automatic/get_bu/newbu.txt"), FTP_TRANSFER_TYPE_BINARY, NULL);
| 11: | cout << GetLastError() << "\n" <<a;
| 12: | if (a==1)
| 13: | {
| 14: | cout << "Upload sollte funktioniert haben";
| 15: | }
| 16: | else
| 17: | {
| 18: | DWORD dwInfo = 0;
| 19: | TCHAR puffer[250] = _T("");
| 20: | DWORD dwSize = sizeof(puffer) / sizeof(TCHAR);
| 21: | if( !InternetGetLastResponseInfo(&dwInfo, puffer, &dwSize) )
| 22: | {
| 23: | cout << GetLastError();
| 24: | cout << "Aufruf InternetGetLastResponseInfo nicht erfolgreich";
| 25: | }
| 26: | //Fehlerbehandlung falls InternetGetLastResponseInfo nicht aufgerufen werden konnte
| 27: | else
| 28: | {
| 29: | wcout << puffer;
| 30: | cout << "Aufruf InternetGetLastResponseInfo erfolgreich";
| 31: | }
| 32: |
| 33: | } |
Connect.cpp
1: | LPCTSTR pstrServer = _T("proxy");
| 2: | INTERNET_PORT port = 21;
| 3: | BOOL bPassive = TRUE;
| 4: |
| 5: |
| 6: | try
| 7: | {
| 8: |
| 9: | //FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt,
| 10: | //connection wird auf zurückgegeben Zeiger gesetzt
| 11: | if(connection = session.GetFtpConnection(pstrServer, LeseListe.servername, LeseListe.password, port, bPassive))
| 12: | {
| 13: | cout << "Verbindung wurde aufgebaut\n";
| 14: | connection_pointer=connection;
| 15: | }
| 16: |
| 17: | }
| 18: | //Fehleroutine
| 19: | catch (CInternetException* pEx)
| 20: | {
| 21: | cout<<"FEHLER : "<<GetLastError()<<endl;
| 22: | TCHAR sz[1024];
| 23: | pEx->GetErrorMessage(sz, 1024);
| 24: | printf_s("ERROR! %S\n", sz);
| 25: | pEx->Delete();
| 26: | }
| 27: |
| 28: |
| 29: | }
| 30: | CFtpConnection * Connect::getLastConnection()
| 31: | {
| 32: | return connection_pointer;
| 33: | } |
|
|
|
|