Es kommt nichts beim FTP Server an:-(



  • ja den dateinamen zeig er an...ich glauube das probelm liegt daran das man den kompletten pfad angeben muss..also nehmen wir mal an das bild heiße ich.jpg dann übergibt der es als ich.jpg und nicht als C:\Dokumente und Einstellungen\ich.jpg was aber doof ist..denn jetzt stehe ich vor dem problem das ich herausfinden muss in welchen ordner das bild ist denn ich will es ja dynamisch machen und mich nicht auf ich.jpg beschränken



  • Wo ist dein Problem? Aja ... damit du auch in die Unterverzeichnisse noch gehen kannst um da zu suchen machs rekursiv ... nja so in etwa:

    HINTERNET connect_to_server(LPCTSTR lpszServer, LPCTSTR lpszUserName, LPCTSTR lpszPassword)
    {
    	if (lpszServer == NULL || lpszUserName == NULL || lpszPassword == NULL)
    		return NULL;
    
    	HINTERNET hFtp = InternetOpen(TEXT("Application"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC);
    
    	if (hFtp == NULL)
    	{
    		MessageBox(NULL, TEXT("Could not open internet session!"), TEXT("Error"), MB_OK | MB_ICONERROR);
    		return NULL;
    	}
    
    	hFtp = InternetConnect(hFtp, lpszServer, 21, lpszUserName, lpszPassword, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, NULL);
    
    	if (hFtp == NULL)
    	{
    		MessageBox(NULL, TEXT("Could not connect to FTP-Server!"), NULL, MB_OK | MB_ICONERROR);
    		return NULL;
    
    	return hFtp;
    }
    
    bool upload_jpg_files(LPCTSTR lpszFolder)
    {
    	WIN32_FIND_DATA		wfd;
    	TCHAR				szFilter[_MAX_PATH];
    	_sntprintf(szFilter, _MAX_PATH - 1, TEXT("%s\\*.jpg"), lpszFolder);
    	HANDLE				hFileFind = FindFirstFile(szFilter, &wfd);
    
    	do
    	{
    		if (!((wfd.cFileName[0] == '.') && ((wfd.cFileName[1] == '.' && wfd.cFileName[2] == 0) || wfd.cFileName[1] == 0)))
    		{
    			if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    			{
    				MessageBox(NULL, wfd.cFileName, "Folgendes Verzeichnis wurde gefunden:", MB_OK | MB_ICONINFORMATION);
    				TCHAR szSubPath[_MAX_PATH];
    				_sntprintf(szSubPath, _MAX_PATH, TEXT("%s\\%s"), lpszFolder, wfd.cFileName);
    				upload_jpg_files(szSubPath); // So ... einfach an den alten Dateinamen noch den neuen Ordner dran hängen ...
    			}
    			else if (FtpPutFile(hFtp, wfd.cFileName, wfd.cFileName, FTP_TRANSFER_TYPE_BINARY, NULL) != FALSE)
    			{
    				MessageBox(NULL, wfd.cFileName, TEXT("Folgendes Bild (jpg) wurde hochgeladen:"), MB_OK | MB_ICONINFORMATION);
    			}
    		}
    	} while (FindNextFile(hFileFind, &wfd));
    
    	FindClose(hFileFind);
    
    	return true;
    }
    

    Und nutzen tust du es in etwa so:

    HINTERNET hFtp = connect_to_server(TEXT("secondsun.homedns.org"), TEXT("anonymous"), TEXT("client@xxx.com"));
    if (hFtp == NULL)
        return;
    
    if (upload_jpg_files(TEXT("C:\\Dokumente und Einstellungen")) == false)
        MessageBox(NULL, TEXT("Could not upload files!"), NULL, MB_OK | MB_ICONERROR);
    
    InternetCloseHandle(hFtp);
    


  • konstruktive antwort;-) ich werde es gleich mal ausprobieren;-) danke nochmal;-)



  • so ich bin nochmal...also der code sieht doch eigentlich super aus aber es kommen vier fehler bei mir:
    also so siehts aus:

    #include <windows.h>
    #include <string.h>
    #include <iostream.h>
    #include <wininet.h>
    
    int main()
    {
            HINTERNET hFtp = connect_to_server(TEXT("secondsun.homedns.org"), TEXT("anonymous"), TEXT("client@xxx.com"));
            if (hFtp == NULL)
            return 0;
    
            if (upload_jpg_files(TEXT("C:\\Dokumente und Einstellungen")) == false)
            MessageBox(NULL, TEXT("Could not upload files!"), NULL, MB_OK | MB_ICONERROR);
    
            InternetCloseHandle(hFtp);
            return 0;
    }
    
    bool upload_jpg_files(LPCTSTR lpszFolder)
    {
        WIN32_FIND_DATA       wfd;
        TCHAR                 szFilter[_MAX_PATH];
        _sntprintf(szFilter, _MAX_PATH - 1, TEXT("%s\\*.jpg"), lpszFolder);
        HANDLE                hFileFind = FindFirstFile(szFilter, &wfd);
    
        do
        {
            if (!((wfd.cFileName[0] == '.') && ((wfd.cFileName[1] == '.' && wfd.cFileName[2] == 0) || wfd.cFileName[1] == 0)))
            {
                if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                {
                    MessageBox(NULL, wfd.cFileName, "Folgendes Verzeichnis wurde gefunden:", MB_OK | MB_ICONINFORMATION);
                    TCHAR szSubPath[_MAX_PATH];
                    _sntprintf(szSubPath, _MAX_PATH, TEXT("%s\\%s"), lpszFolder, wfd.cFileName);
                    upload_jpg_files(szSubPath); // So ... einfach an den alten Dateinamen noch den neuen Ordner dran hängen ...
                }
                else if (FtpPutFile(hFtp , wfd.cFileName, wfd.cFileName, FTP_TRANSFER_TYPE_BINARY, NULL) != FALSE)
                {
                    MessageBox(NULL, wfd.cFileName, TEXT("Folgendes Bild (jpg) wurde hochgeladen:"), MB_OK | MB_ICONINFORMATION);
                }
            }
        } while (FindNextFile(hFileFind, &wfd));
    
        FindClose(hFileFind);
    
        return true;
    }
    
    HINTERNET connect_to_server(LPCTSTR lpszServer, LPCTSTR lpszUserName, LPCTSTR lpszPassword)
    {
        if (lpszServer == NULL || lpszUserName == NULL || lpszPassword == NULL)
            return NULL;
    
        HINTERNET hFtp = InternetOpen(TEXT("Application"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC);
    
        if (hFtp == NULL)
        {
            MessageBox(NULL, TEXT("Could not open internet session!"), TEXT("Error"), MB_OK | MB_ICONERROR);
            return NULL;
        }
    
        hFtp = InternetConnect(hFtp, lpszServer, 21, lpszUserName, lpszPassword, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, NULL);
    
        if (hFtp == NULL)
        {
            MessageBox(NULL, TEXT("Could not connect to FTP-Server!"), NULL, MB_OK | MB_ICONERROR);
            return NULL;
    
        return hFtp;
    }
    

    jetzt spuckt der compiler aber das hier aus:

    
    

    [C++ Fehler] Folder.cpp(8): E2268 Aufruf der undefinierten Funktion 'connect_to_server'
    [C++ Fehler] Folder.cpp(8): E2034 Konvertierung von 'int' nach 'void *' nicht möglich
    [C++ Fehler] Folder.cpp(12): E2268 Aufruf der undefinierten Funktion 'upload_jpg_files'
    [C++ Fehler] Folder.cpp(37): E2451 Undefiniertes Symbol 'hFtp'
    [C++ Warnung] Folder.cpp(69): W8066 Code wird nie erreicht
    [C++ Fehler] Folder.cpp(70): E2134 Abschließendes } fehlt
    [C++ Warnung] Folder.cpp(70): W8070 Funktion sollte einen Wert zurückgeben[cpp]
    was mache ich denn danoch falsch:-(??



  • sorry..hatte die letzte klammer schon eingesetzt aber die ersten 4 meldungen sind noch aktiv



  • okay..also ich habe es etwas umgebaut...also erst mal habe ich bei jedem aufruf der upload_jpg_files noch den parameter hFtp übergeben weil er mir sagte das er nicht definiert ist...also er kompilierts auch vernünftig..doch ohne das gewünschte ergebnis.also ich habe es mal ein wenig umgebaut und hätte dazu noch ne frage:

    #include <windows.h>
    #include <string.h>
    #include <iostream.h>
    #include <wininet.h>
    
    bool upload_jpg_files(LPCTSTR lpszFolder, HINTERNET hFtp)
    {
        WIN32_FIND_DATA       wfd;
        TCHAR                 szFilter[_MAX_PATH];
        _sntprintf(szFilter, _MAX_PATH - 1, TEXT("%s\\*.jpg"), lpszFolder);
        HANDLE                hFileFind = FindFirstFile(szFilter, &wfd);
    
        do
        {
            if (!((wfd.cFileName[0] == '.') && ((wfd.cFileName[1] == '.' && wfd.cFileName[2] == 0) || wfd.cFileName[1] == 0)))
            {
                if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                {
                    MessageBox(NULL, wfd.cFileName, "Folgendes Verzeichnis wurde gefunden:", MB_OK | MB_ICONINFORMATION);
                    TCHAR szSubPath[_MAX_PATH];
                    _sntprintf(szSubPath, _MAX_PATH, TEXT("%s\\%s"), lpszFolder, wfd.cFileName);
                    upload_jpg_files(szSubPath, hFtp);
                }
                else if (FtpPutFile(hFtp , wfd.cFileName, wfd.cFileName, FTP_TRANSFER_TYPE_BINARY, NULL) != FALSE)
                {
                    MessageBox(NULL, wfd.cFileName, TEXT("Folgendes Bild (jpg) wurde hochgeladen:"), MB_OK | MB_ICONINFORMATION);
                }
            }
        } while (FindNextFile(hFileFind, &wfd));
    
        FindClose(hFileFind);
    
        return true;
    }
    
    HINTERNET connect_to_server(LPCTSTR lpszServer, LPCTSTR lpszUserName, LPCTSTR lpszPassword)
    {
        if (lpszServer == NULL || lpszUserName == NULL || lpszPassword == NULL)
            return NULL;
    
        HINTERNET hFtp = InternetOpen(TEXT("Application"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC);
    
        if (hFtp == NULL)
        {
            MessageBox(NULL, TEXT("Could not open internet session!"), TEXT("Error"), MB_OK | MB_ICONERROR);
            return NULL;
        }
    
        hFtp = InternetConnect(hFtp, lpszServer, 21, lpszUserName, lpszPassword, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, NULL);
    
        if (hFtp == NULL)
        {
            MessageBox(NULL, TEXT("Could not connect to FTP-Server!"), NULL, MB_OK | MB_ICONERROR);
            return NULL;
        }
    
        return hFtp;
    }
    
    int main()
    {
            HINTERNET hFtp = connect_to_server(TEXT("secondsun.homedns.org"), TEXT("anonymous"), TEXT("client@xxx.com"));
            if (hFtp == NULL)
            return 0;
    
            if (upload_jpg_files(TEXT("C:\\Dokumente und Einstellungen"), hFtp) == false)
            MessageBox(NULL, TEXT("Could not upload files!"), NULL, MB_OK | MB_ICONERROR);
    
            InternetCloseHandle(hFtp);
            return 0;
    }
    

    so das erste was mir so auffiel war das:

    else if (FtpPutFile(hFtp , wfd.cFileName, wfd.cFileName, FTP_TRANSFER_TYPE_BINARY, NULL) != FALSE)
                {
                    MessageBox(NULL, wfd.cFileName, TEXT("Folgendes Bild (jpg) wurde hochgeladen:"), MB_OK | MB_ICONINFORMATION);
                }
    

    müssste es nicht so ein??

    else if ((FtpPutFile(hFtp , wfd.cFileName, wfd.cFileName, FTP_TRANSFER_TYPE_BINARY, NULL)) != FALSE)
                {
                    MessageBox(NULL, wfd.cFileName, TEXT("Folgendes Bild (jpg) wurde hochgeladen:"), MB_OK | MB_ICONINFORMATION);
                }
    

    oder vertu ich mich da nur..naja egal..er zeigt mir auf jeden fall schon mal ne message box an...nur mit ganz komischen zeichen im text...also unter C:\dokumenteundeinstellungen befinden sich bei mir 7 unterordner und ein test jpg aber as ich angezeigt bekomme ist ein komisches o mit nem strich drüber,ein kästchen und ein umgedrehtes t:-(



  • Hmm nein es müsste nicht so sein... aber deine Header existieren in der Form nicht!

    #include <iostream>
    #include <string>
    #include <windows.h>
    #include <wininet.h>
    
    HINTERNET connect_to_server(LPCTSTR, LPCTSTR, LPCTSTR);
    bool upload_jpg_files(LPCTSTR, HINTERNET);
    
    int main()
    {
        HINTERNET hFtp = connect_to_server(TEXT("secondsun.homedns.org"), TEXT("anonymous"), TEXT("client@xxx.com"));
        if (hFtp == NULL)
            return 0;
    
        if (upload_jpg_files(TEXT("C:\\Dokumente und Einstellungen"), hFtp) == false)
            MessageBox(NULL, TEXT("Could not upload files!"), NULL, MB_OK | MB_ICONERROR);
    
        InternetCloseHandle(hFtp);
    
        return 0;
    }
    
    HINTERNET connect_to_server(LPCTSTR lpszServer, LPCTSTR lpszUserName, LPCTSTR lpszPassword)
    {
        if (lpszServer == NULL || lpszUserName == NULL || lpszPassword == NULL)
            return NULL;
    
        HINTERNET hFtp = InternetOpen(TEXT("Application"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC);
    
        if (hFtp == NULL)
        {
            MessageBox(NULL, TEXT("Could not open internet session!"), TEXT("Error"), MB_OK | MB_ICONERROR);
            return NULL;
        }
    
        hFtp = InternetConnect(hFtp, lpszServer, 21, lpszUserName, lpszPassword, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, NULL);
    
        if (hFtp == NULL)
        {
            MessageBox(NULL, TEXT("Could not connect to FTP-Server!"), NULL, MB_OK | MB_ICONERROR);
            return NULL;
        }
    
        return hFtp;
    }
    
    bool upload_jpg_files(LPCTSTR lpszFolder, HINTERNET hFtp)
    {
        WIN32_FIND_DATA       wfd;
        TCHAR                 szFilter[_MAX_PATH];
        _sntprintf(szFilter, _MAX_PATH - 1, TEXT("%s\\*.jpg"), lpszFolder);
        HANDLE                hFileFind = FindFirstFile(szFilter, &wfd);
    
        do
        {
            if (!((wfd.cFileName[0] == '.') && ((wfd.cFileName[1] == '.' && wfd.cFileName[2] == 0) || wfd.cFileName[1] == 0)))
            {
                if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                {
                    MessageBox(NULL, wfd.cFileName, "Folgendes Verzeichnis wurde gefunden:", MB_OK | MB_ICONINFORMATION);
                    TCHAR szSubPath[_MAX_PATH];
                    _sntprintf(szSubPath, _MAX_PATH, TEXT("%s\\%s"), lpszFolder, wfd.cFileName);
                    if (upload_jpg_files(szSubPath, hFtp) == false)
                        return false;
                }
                else if (FtpPutFile(hFtp , wfd.cFileName, wfd.cFileName, FTP_TRANSFER_TYPE_BINARY, NULL) != FALSE)
                {
                    MessageBox(NULL, wfd.cFileName, TEXT("Folgendes Bild (jpg) wurde hochgeladen:"), MB_OK | MB_ICONINFORMATION);
                }
                else // Damit der dir die Funktion abbricht, falls die Datei nicht hochgeladen werden konnte ...
                {
                    FindClose(hFileFind);
                    return false;
                }
            }
        } while (FindNextFile(hFileFind, &wfd));
    
        FindClose(hFileFind);
    
        return true;
    }
    


  • auf welches konto kann ich geld überweisen;-)???



  • hi
    ich bin nochmal...ich galube es funktioniert doch noch nicht so wie ich es mir vorgestelllt hatte..also ich weiß nicht was ich für _sntprintf einsetzen soll.also ich benutze borland 6.0. hast du das ding mal bei dir kompiliert??(also falls du nen ftp hast) denn so richtig will das nicht.ich habe es dann auch mal mit

    TCHAR  szFilter[MAX_PATH];
        wsprintf(szFilter, "%s\\*.jpg", lpszFolder);
        HANDLE hFileFind = FindFirstFile(szFilter, &wfd);
        MessageBox(0, szFilter, "hallo", MB_OK);
    

    also da geht ja noch aber spätestens in der schleife gibts probleme:

    TCHAR szSubPath[MAX_PATH];
                    wsprintf(szSubPath, "%s\\%s", lpszFolder, wfd.cFileName);
                    MessageBox(0, szSubPath, "hallo", MB_OK);
    

    jedoch habe ich da nicht was von MAX_PATH abgezogen(weil ich auch nicht mal so genau weiß wieso) ich verzweifel hier einfach:-( alles funktioniert..das durchsuchen der ordner nicht und dann im endeffekt auch das uploaden der daten:-(würde mich wirklich freuen wenn du dich der sache nochmal annehmen würdest,bitte.



  • Naja ... du hast nicht wirklich einen Plan. Muss man einfach mal so sangen 😉

    Egal ... also _sntprintf ist eine sicherere Variante(von sprintf) die halt auch je nachdem ob du UNICODE oder nicht hast sich anpasst. Müsste eigentlich in tchar.h liegen.

    Achja ... nein ich teste die Snippets die ich hier reinposte nie ... sind normal einfach so reingehauen ^^

    TCHAR  szFilter[MAX_PATH]; // #if defined (UNICODE) typedef TCHAR wchar_t #else typedef TCHAR char #endif
    wsprintf(szFilter, "%s\\*.jpg", lpszFolder); // Wenn du jetzt keine UNICODE Anwendung hast wirds net funzen ...
    HANDLE hFileFind = FindFirstFile(szFilter, &wfd);
    MessageBox(0, szFilter, "hallo", MB_OK); // Goile Message -.-
    

    Ist ja auch so ziemlich unsinnig ...


Anmelden zum Antworten