Verzeichniss auf Server laden



  • Hallo ich versuche gerade mit der Indy Komponente ein eine Datei aus einem Ordner auf meinen Server zu laden der name des ordners heisst:

    I:\\Dokumente und Einstellungen\\benutzer\\test.txt

    Ich hab auch schon eine Funktion welche mir den Benutzername ausließt
    diesen Speichere ich ja dann in der Variable user_name.

    Nur mein Problem ist wie krieg ich die Variable nicht in die Put Funktion.

    [cs}
    DWORD nSize;
    char user_name[255];
    nSize = sizeof( user_name );
    GetUserName( user_name, &nSize );

    IdFTP1->Host="server";
    IdFTP1->Username="username";
    IdFTP1->Password="passwort";
    IdFTP1->Passive=false; //ist auch Standard
    IdFTP1->Port=21; //ist auch Standard
    IdFTP1->TransferType=ftBinary;

    IdFTP1->Connect();

    IdFTP1->Put("I:\\Dokumente und Einstellungen\"<<user_name"\\test.txt","/ordner.txt",false);

    IdFTP1->Disconnect();

    [/cs]

    So hab ich es versucht aber dann bekomme ich folgende Fehlermeldungen vom Compiler.

    Erzeugen
    [C++ Fehler] Unit1.cpp(42): E2087 Unzulässige Zeigerverwendung
    [C++ Fehler] Unit1.cpp(42): E2121 ) fehlt beim Funktionsaufruf



  • IdFTP1->Put("I:\\Dokumente und Einstellungen\\" + user_name + "\\test.txt","/ordner.txt",false);
    


  • Laufwerk i: ist doch kein ftp-Server.
    Schau mal unter Kopieren von Verzeichnissen.



  • I ist das Quellverzeichnis, dass die Datei enthält, die hochgeladen werden soll...



  • @1234 Laufwerk i:\ ist mein Computer

    @Joe_M.

    DWORD nSize;
       char user_name[255];
       nSize = sizeof( user_name );
       GetUserName( user_name, &nSize );
    
    IdFTP1->Host="server";
    	IdFTP1->Username="username";
    	IdFTP1->Password="passwort";
    	IdFTP1->Passive=false; //ist auch Standard
    	IdFTP1->Port=21; //ist auch Standard
    	IdFTP1->TransferType=ftBinary;
    
            IdFTP1->Connect();
    
            IdFTP1->Disconnect();
    
            IdFTP1->Put("I:\\Dokumente und Einstellungen\\" + user_name + "\\test.txt","/ordner.txt",false);
    

    Wenn ich es so mache sagt er Unzulässige Zeigeradditon 😞



  • dirty hack:

    IdFTP1->Put(AnsiString("I:\\Dokumente und Einstellungen\\") + user_name + AnsiString("\\test.txt"),"/ordner.txt",false);
    

    Besser wäre es, den String ordentlich zusammenzubauen.



  • Unzulässige Zeigeraddition sollte aber eigentlich nur bei dem Versuch kommen zwei Literale direkt zusammenzufügen...

    Also irgendwas in der Richtung;

    MeinString = "1234" + "5678";
    

    Ich sehe gerade, dass user_name ein C-String ist. Warum verwendest Du keinen AnsiString?

    Falls wittes Lösung nicht funktioniert:

    IdFTP1->Put("I:\\Dokumente und Einstellungen\\" + AnsiString(user_name) + "\\test.txt","/ordner.txt",false);
    


  • Thx beide Lösungen funktionieren :>

    Aber kann man den auch ganze Verzeichnisse hochladen anstatt nur einzelne Datein ?



  • Hallo

    Klar, du must nur alle Dateien des Verzeichnisses einzeln hochladden.

    bis bald
    akari



  • Also ich hatte mir das so gedacht:

    IdFTP1->Put("I:\\Dokumente und Einstellungen\\" + user_name + "\\meinorder","/ordneraufserver",false);
    

    So wollte ich das also das der alle Datein aus dem ordner "meinorder" auf dem server in dem ordner "ordneraufserver" aber das funktionierte nicht 😞



  • Das war halt falsch gedacht. 🙂
    Du musst, wie von akari gesagt, die Dateien einzeln hochladen, und dabei die erforderlichen Ordner und Unterordner nach Bedarf auf dem Server erzeugen.


Anmelden zum Antworten