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: | } |
|
|
|
|