FtpPutFile

schwegennagel

Cadet 4th Year
Registriert
Feb. 2005
Beiträge
79
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.
Und es wird auch nichts hochgeladen.:(
Code:
Connect(); 
connection_pointer=Connect::getLastConnection(); 
FtpPutFile(connection_pointer, _T("C:/CPlusPlus/TxtTransfer/newbu.txt"), _T("automatic/get_bu/newbu.txt"), FTP_TRANSFER_TYPE_BINARY, 0);
cout << GetLastError();

Die Methode Connect funktioniert einwandfrei. Ich habe den von Connect und getLastConnection zurückgegebenen Zeiger schon für andere Methoden verwendet. Sieht jemand in diesem Codestück einen Fehler?


Hier Connect.cpp:
Code:
CFtpConnection* Connect::connection_pointer=NULL;
CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY ,
	                          (_T( "proxy")), NULL, 0);  
	
Connect::Connect(void)
{
	
	//Objekt session wird erzeugt

	//Zeiger auf CFtpConnection
	CFtpConnection *connection;
	//Objekt der Klasse read_serverlist wird erzeugt
	read_serverlist LeseListe;

	LPCTSTR pstrServer = _T("proxy"); 
    INTERNET_PORT port = 21;
    BOOL bPassive = TRUE;

	
	try
	{

	//FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt, 
    //connection wird auf zurückgegeben Zeiger gesetzt
		if(connection = session.GetFtpConnection(pstrServer, LeseListe.servername, LeseListe.password, port, bPassive)) 
			{
			cout << "Verbindung wurde aufgebaut\n";     
			connection_pointer=connection; 
			}
    
	}
	//Fehleroutine
	catch (CInternetException* pEx)
    {
		cout<<"FEHLER : "<<GetLastError()<<endl;
        TCHAR sz[1024];
        pEx->GetErrorMessage(sz, 1024);
        printf_s("ERROR!  %S\n", sz);
        pEx->Delete();
     }


}
CFtpConnection * Connect::getLastConnection() 
{ 
	return connection_pointer; 
}

Kennt niemand eine Antwort? Komme im Moment echt nicht weiter:mad: Habe es auch schon mit verschiendenen dwFlags probiert.

Code:
testupload::testupload(void)
{	
	Connect();
	CFtpConnection* connection_pointer;
	connection_pointer=Connect::getLastConnection();
	if(connection_pointer->SetCurrentDirectory(_T("automatic/get_bu")))								
		{
			cout<<"Verzeichnis wurde mit Erfolg! gewechselt\n";
			bool a;
			a=FtpPutFile(connection_pointer, _T("C:/CPlusPlus/TxtTransfer/newbu.txt"), _T("automatic/get_bu/newbu.txt"), INTERNET_FLAG_TRANSFER_BINARY, 0);		
			cout << GetLastError() << a;
		}

	else
		{
			
			DWORD dwInfo = 0; 
			TCHAR puffer[250] = _T("");
			DWORD dwSize = sizeof(puffer) / sizeof(TCHAR);
			if( !InternetGetLastResponseInfo(&dwInfo, puffer, &dwSize) )
					{
						cout << GetLastError();
					    cout << "Aufruf InternetGetLastResponseInfo nicht erfolgreich";
					}
			//Fehlerbehandlung falls InternetGetLastResponseInfo nicht aufgerufen werden konnte
			else
					{
						wcout << puffer;
						cout << "Aufruf InternetGetLastResponseInfo erfolgreich";
					}

		
		}
}

Morgen,
das Problem hat sich erledigt. Wenn ich Putfile benutze funktioniert es.
testuptload.cpp
Code:
testupload::testupload(void)
{	
	Connect();
	CFtpConnection* connection_pointer;
	connection_pointer=Connect::getLastConnection();
	/*if(connection_pointer->SetCurrentDirectory(_T("automatic/get_bu")))								
		{
			cout<<"Verzeichnis wurde mit Erfolg! gewechselt\n";*/
			bool a;
			a=connection_pointer->PutFile( _T("C:/CPlusPlus/TxtTransfer/newbu.txt"), _T("automatic/get_bu/newbu.txt"), FTP_TRANSFER_TYPE_BINARY, NULL);		
			cout << GetLastError() << "\n" <<a;
			if (a==1)
			{
				cout << "Upload sollte funktioniert haben";
			}
					else
					{
						DWORD dwInfo = 0; 
						TCHAR puffer[250] = _T("");
						DWORD dwSize = sizeof(puffer) / sizeof(TCHAR);
						if( !InternetGetLastResponseInfo(&dwInfo, puffer, &dwSize) )
						{
							cout << GetLastError();
							cout << "Aufruf InternetGetLastResponseInfo nicht erfolgreich";
						}
			//Fehlerbehandlung falls InternetGetLastResponseInfo nicht aufgerufen werden konnte
							else
							{
								wcout << puffer;
								cout << "Aufruf InternetGetLastResponseInfo erfolgreich";
							}

					}

Connect.cpp
Code:
	LPCTSTR pstrServer = _T("proxy"); 
    INTERNET_PORT port = 21;
    BOOL bPassive = TRUE;

	
	try
	{

	//FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt, 
    //connection wird auf zurückgegeben Zeiger gesetzt
		if(connection = session.GetFtpConnection(pstrServer, LeseListe.servername, LeseListe.password, port, bPassive)) 
			{
			cout << "Verbindung wurde aufgebaut\n";     
			connection_pointer=connection; 
			}
    
	}
	//Fehleroutine
	catch (CInternetException* pEx)
    {
		cout<<"FEHLER : "<<GetLastError()<<endl;
        TCHAR sz[1024];
        pEx->GetErrorMessage(sz, 1024);
        printf_s("ERROR!  %S\n", sz);
        pEx->Delete();
     }


}
CFtpConnection * Connect::getLastConnection() 
{ 
	return connection_pointer; 
}
 
Zuletzt bearbeitet von einem Moderator: (3-fachpost)

Ähnliche Themen

Zurück
Oben