FTP Verbindung aufbauen und Uploaden



  • Nabend,

    ich suche nach einer Möglichkeit mit einer MFC Anwendung, eine Verbindung zu einem FTP Server aufzubauen. So möchte ich Bilder hochladen, die ich vorher z.b mit dem Button "durchsuchen" geöffnet habe.
    Das wäre soweit "eigentlich" auch schon alles, nur habe ich festgestellt das es sich einfacher anhört als getan. Was gibt es dort für Möglichkeiten so etwas zu realisieren?
    Eine Lösung konnte ich auch leider nach längerer suche mit Google nicht finden, was mich selber etwas verwundert.

    MfG
    Code_XY



  • Du kannst dich mit Winsock mit dem FTP Server unterhalten.
    Klassen sind auch unter www.codeproject.com zu finden.
    Es gibt auch Klassen, die die MFC mitliefert und mit denen man das FTP Protokoll nutzen kann.



  • Ok, habe es nun geschafft eine Verbindung zu einem FTP Server aufzubauen und dateien hochzuladen.

    Würde das Programm noch gerne mit der Dialogbox "Datei öffnen" auszustatten.
    Habe folgenden Code erstellt:

    {
    	CString szFilter ="GIF|*.gif|JPEG|*.jpg||";
    	CString sfilename;
    	CFileDialog *open = new CFileDialog(TRUE, NULL, "*.text", OFN_HIDEREADONLY|OFN_FILEMUSTEXIST, szFilter);
    	open->m_ofn.lpstrTitle = "Datei-öffnen...";
    
    		if(open->DoModal() == IDOK)
    		{
            sfilename = open->GetPathName();
    
    	}
    	delete open;
    

    Wie kann ich den Pfad der geöffneten Datei nun in einer "Edit-Control" Box anzeigen lassen ?

    Wäre dankbar für hilfe 🙂

    mfg



  • Erstelle für das EditControl eine Variable, dann schneide den Dateinamen aus dem String raus.

    sfilename = open->GetPathName();
    sfilename = sfilename.Left(sfilename.ReverseFind('\\'));
    

    Anschließend der Variable den Wert zuweisen und updaten.

    UpdateData(true);
      m_controlvariable = sfilename;
    UpdateData(false);
    


  • Nabend,

    danke für deine Hilfe! Allerdings gibt es da noch ein kleines Problem, wähle ich nun eine Datei aus, wird in dem Edit-Control Feld nur der Pfad des Ordners angezeigt in dem die Datei liegt.
    Bsp: *C:\......\Bilder*

    anstatt

    C:\......\Bilder\bild1.jpg

    Wodran liegt das?

    gruß



  • Das liegt daran das ich das so verstanden habe, dass du nur den Pfad haben möchtest.
    Muss dann so heißen:

    sfilename = open->GetPathName();
    
    UpdateData(true);
      m_controlvariable = sfilename;
    UpdateData(false);
    

    Versteh mich bitte nicht falsch, ich leg dir aber zuerst mal nahe, die ganzen Grundlagen zu erlernen. In diesem Fall hättest du nämlich direkt gesehen das ich mit dem

    sfilename = sfilename.Left(sfilename.ReverseFind('\\'));
    

    den String auseinander schneide.
    Die Grundlagen sind das A und O, da du ansonsten später noch extrem große probleme kriegst.



  • Interessantes Thream, der code konnte mir auch helfen, war ebenfalls auf der suche nach so einer funktion. 🙂

    mfg


Anmelden zum Antworten