FTP Upload einzelner Dateien

  • Hi,

    ich hab ein Problem beim Erstellen eines Programmes, mit dem man eine Datei auswählen können soll und diese dann einfach per Button 'Upload' auf einen Server hochladen kann.

    Ich habe mir schon das hier angeschaut: http://teammc.cc/aut_ftp/ aber ich komme damit nicht so recht klar. Kann mir vllt jemand genauer erklären wie das funktioniert? (ich bin recht neu in Autoit)

    Vielen Dank ;)
    Johannes

    Einmal editiert, zuletzt von Johannes (28. September 2008 um 21:36)

  • Thx, hab mir die Dateien angeschaut und soweit auch verstanden. Zumindest hab ich es mit dem Programm hinbekommen. Also vielen Dank für den Link^^ ;)

  • Hallo,

    ich verwende das engl. FTP- Script (.FTP.au3) und habe die .FTP_Example.au3 dafür herangezogen. Mein Code, um den es speziell geht ist folgender:

    Code
    $name = @UserName & "c:\send.txt" 
    _FtpPutFile($Hand, 'C:\send.txt', '/Psychware/' & $name) ;Upload to sub directory with different file name 
    if @error then msgbox(0,"Error","PutFile 3")

    Mir ging es darum, eine kleine Log- Datei namens send.txt upzuloaden und zwar von verschiedenen Usern. Damit sich die Dateien einerseits nicht in die Quere kommen und andererseits dem entsprechenden User zuzuordnen sind, habe ich den Dateinamen mit dem Usernamen gekoppelt. Der FTP- Upload funktioniert, das Verzeichnis wird auch angelegt, wenn es noch nicht existiert und auch die Datei wird geschrieben. Leider ist die Datei im Anschluss 0 Bytes groß (also ohne Inhalt) und auch der PutFile 3- Error wird in der MessageBox angezeigt.

    Mir ist absolut unklar, was da falsch ist :wacko: Kennt jemand eine Lösung bzw. sieht jemand meinen Fehler ?

    Gruß,

    TB

  • naja wärs nich sinvoller eine datei dafür zu nehmen?...

    also per inetget die logdatei runterzuladen die entsprechenden logs von dem user dazuzuschreiben und danach wieder hochladen?... geht halt nur wenn du genau weisst das es nicht oft vorkommen wird das 2 user das gleichzeitig tun... am besten erstmal lokal eine logdatei schreiben und dann wenn der user das pgr beendet die logdatei vom ftp holn den lokalen log mit reinkopiern und die datei wieder hochladen, sollte nur ein paar sekunden dauern, somit ist der fall das 2 user es gleichzeitig tun relativ gering

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Zitat

    FireFlyer: Nach Murphys Gesetzt liegt die Wahrscheinlichkeit, dass dieser Fall eintritt, bei genau 100%. :D

    hmpf... da hast du verdammt recht... ^^ ich sag ma: SQL 4 the win :D

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • genau. Das beste wäre ein SQL - PHP system. Dann musst du auch keine FTP-Kennwörter in dein Programm einbauen und es ist sicherer. (Wenn die Datenbankabfrage abgesichert wird)

  • Das was Oscar gepostet hat stimmt schon du hast es bloß falsch angewendet.

    Post mal den ganzen Teil deines Scripts wo du den Dateinamen festlegst und die Datei hochlädst :!:

  • Das was Oscar gepostet hat stimmt schon du hast es bloß falsch angewendet.

    Post mal den ganzen Teil deines Scripts wo du den Dateinamen festlegst und die Datei hochlädst :!:

    [autoit]


    ; FTP- Upload
    #include <.FTP.au3>
    #include <Array.au3>
    $server = 'Servername'
    $username = 'Username'
    $pass = 'Passwort'
    $Hand = _FTPOpen('Server')
    _FTPConnect($Hand, $server, $username, $pass)
    if @error then msgbox(0,"Error","Connect", 3)
    _FTPMakeDir($Hand, 'Psychware')
    if @error then msgbox(0,"Error","MakeDir", 3)
    $name = @UserName & "send.txt"
    _FtpPutFile($Hand, 'C:\send.txt', '/Psychware/' & $name)
    if @error then msgbox(0,"Error","PutFile 3", 3)
    $FIRSTFILEINFO= _FTPFileFindFirst($Hand,"*")
    if @error then
    msgbox(0,"Error","_FileFindFirst", 3)
    Else
    _ArrayDisplay($FIRSTFILEINFO)
    EndIf
    $SECONDFILEINFO= _FTPFileFindNext($Hand)
    if @error then
    msgbox(0,"Error","_FTPFileFindNext", 3)
    Else
    _ArrayDisplay($SECONDFILEINFO)
    EndIf
    $THIRDFILEINFO= _FTPFileFindNext($Hand)
    if @error then
    msgbox(0,"Error","_FTPFileFindNext", 3)
    Else
    _ArrayDisplay($THIRDFILEINFO)
    EndIf
    _FTPFileFindClose($Hand)
    _FTPGetFolderContents($Hand,"/Psychware/",@DesktopDir&"\ftp udf test\",1)
    _FTPClose($Hand)
    Msgbox(0,"FTP Upload","...has been finished", 3)

    [/autoit]


    OK, ich hoffe, jemand findet den Fehler :S


    Gruß,

    TB

  • Spoiler anzeigen
    [autoit]

    ; FTP- Upload
    #include <_FTP.au3>
    #include <Array.au3>
    $server = 'localhost'
    $username = 'anonymous'
    $pass = 'Passwort'
    $Hand = _FTPOpen("lala's FTP-Tester")
    _FTPConnect($Hand, $server, $username, $pass)
    if @error then msgbox(0,"Error","Connect", 3)
    _FTPMakeDir($Hand, 'Psychware')
    if @error then msgbox(0,"Error","MakeDir", 3)
    $name = @UserName & "send.txt"
    _FtpPutFile($Hand, 'C:\wepkeys.txt', '/Psychware/' & $name)
    if @error then msgbox(0,"Error","PutFile 3", 3)
    $FIRSTFILEINFO= _FTPFileFindFirst($Hand,"*")
    if @error then
    msgbox(0,"Error","_FileFindFirst", 3)
    Else
    _ArrayDisplay($FIRSTFILEINFO)
    EndIf
    $SECONDFILEINFO= _FTPFileFindNext($Hand)
    if @error then
    msgbox(0,"Error","_FTPFileFindNext", 3)
    Else
    _ArrayDisplay($SECONDFILEINFO)
    EndIf
    $THIRDFILEINFO= _FTPFileFindNext($Hand)
    if @error then
    msgbox(0,"Error","_FTPFileFindNext", 3)
    Else
    _ArrayDisplay($THIRDFILEINFO)
    EndIf
    _FTPFileFindClose($Hand)
    _FTPGetFolderContents($Hand,"/Psychware/",@DesktopDir&"\ftp udf test\",1)
    _FTPClose($Hand)
    Msgbox(0,"FTP Upload","...has been finished", 3)

    [/autoit]


    Hat bei mir alles fehlerfrei funktioniert überprüf mal deine Zugangsdaten und -berechtigungen.

  • Hat bei mir alles fehlerfrei funktioniert überprüf mal deine Zugangsdaten und -berechtigungen.


    @mehrsolala

    Da ja auf dem FTP- Server das Verzeichnis korrekt erstellt wird und auch die Datei hochgeladen wird sowie mit dem richtigen Namen dort anschließend zu finden ist, kann ich mir kaum vorstellen, dass die Zugangsdaten oder Berechtigungen nicht stimmen. Das Problem besteht ja lediglich darin, dass die Datei leer ist, also 0 Bytes groß und hierbei

    [autoit]


    _FtpPutFile($Hand, 'C:\send.txt', '/Psychware/' & $name)
    if @error then msgbox(0,"Error","PutFile 3", 3)

    [/autoit]


    auch den "Error" zurückliefert...?

    Gruß,

    TB

  • C:\send.txt existiert und steht auch was drin ??
    Weil bei mir gehts halt ordentlich. Wegen 0 B vielleicht mal im FTP-Prog aktualisieren