FileRead über HTTP

  • Hi!

    Ich möchte so eine Art Updatefunktion schreiben. Was brauch ich denn, um das ganze über einen Server laufen zu lassen? Webspace ist funpic.de
    Also ich will dass eben die datei version.txt auf dem Pfad user.funpic.de/version.txt gelesen wird.

    FileRead geht ja nicht (war ja klar dass es nicht so einfach geht). Ist das kompliziert das zu verwirklichen? Welche Befehle brauch ich?

    fabs

  • Hi
    Mit InetGet kannst du die Datei runterladen und dann FileRead verwenden.
    Ansonsten guck dir das an

  • Und hat das bei Dir funktioniert.

    bei mir kommt kein _FTPConnect() zu stande. Die Parameter sind richtig, bei direkt eingabe unter FTP.exe kommt die Verbindung zu stande.

    Gruss Hans-Jürgen ^^

  • Bei mir funktioniert deine Variante auch nicht, Dan.

    [autoit]


    $download = InetGet("http://user.funpic.de", "file.txt")
    $read = FileRead($download)
    MsgBox(64, "bla", $read)

    [/autoit]
  • Bei mir funktioniert deine Variante auch nicht, Dan.


    InetGet
    Downloads a file from the internet using the http or ftp protocol.
    Return Value
    Success: Returns 1.
    Failure: Returns 0.

    So wirds funzen

    [autoit]


    $download = InetGet("http://user.funpic.de", "file.txt")
    If $download = 1 Then
    $read = FileRead("file.txt")
    MsgBox(64, "bla", $read)
    Else
    MsgBox(0, "Fehler", "Download gescheitert")
    EndIf

    [/autoit]
  • Ah Okay. Leider funktioniert aber auch das nicht richtig, da bekomme ich das "INDEX OF//" zurück. Die Variante von Oscar funktioniert so wie ich mir das vorgestellt habe. Danke an alle :)

  • Hi...


    Ich habe in ein paar Programmen von mir ein recht gutes Updatesystem...

    [autoit][/autoit][autoit][/autoit][autoit]

    If FileExists (@ScriptDir&'\update.exe') = True Then
    FileDelete (@ScriptDir&'\update.exe')
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $ver = FileGetVersion(@ScriptDir&"\Setup.exe")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $version = 'v '&$ver&' Beta'
    #AutoIt3Wrapper_res_fileversion=0.0.1.3
    #AutoIt3Wrapper_icon=ico.ico
    #AutoIt3Wrapper_res_comment=..
    #AutoIt3Wrapper_res_description=..
    #AutoIt3Wrapper_OutFile=..
    #AutoIt3Wrapper_Res_Language=Deutsch
    #AutoIt3Wrapper_Res_Field=..
    ;#AutoIt3Wrapper_run_after=uploader.exe

    [/autoit][autoit][/autoit][autoit]

    ;===========================================================================================
    ; UPDATE

    [/autoit][autoit][/autoit][autoit]

    $ver_neu = _INetGetSource ( 'http://name.ch.funpic.de/version.txt')
    ;MsgBox ( 262144,"",$ver_neu)
    $neue_version = StringReplace ( $ver_neu,'.','')
    $lokale_version = StringReplace ( $ver,'.','')
    If $neue_version > $lokale_version Then

    If MsgBox ( 32+4+262144 ,"Update","Du benutzt momentan die Version "&$ver&' .'&@CRLF _
    &'Auf dem Update Server wurde die Version '&$ver_neu&' gefunden.'&@CRLF&@CRLF _
    &'Möchtest du Updaten? ( Deine Einstellungen bleiben alle vorhanden. )') = 6 Then
    InetGet ('http://name.ch.funpic.de/update.exe','update.exe',1)
    Sleep ( 500 )
    Run ( @ScriptDir&"\update.exe" )
    Exit

    EndIf

    EndIf

    [/autoit][autoit][/autoit][autoit]

    ;===========================================================================================

    [/autoit]

    Also auf dem Server liegt die version.txt und die aktuelle Version von der Setup.exe
    Und es ist eine update.exe die die beim Update vom Server geladen wird und dann die aktuelle Version von der Setup.exe runterläd...

    Also bei mir fuzt das sehr gut...

    MFG chris :!:

  • Hallo GTA.

    Frage, wie mache ich das, wenn ich aus einer Datei nur die z. B. 5. Zeile einer Textdatei / Ini-Datei lesen möchte?
    Geht das auch ohne Download und wenn ja, wie?

    LG, Crazy-A.


    Hallo

    Ohne ne Datei downloaden zu müssen:

    [autoit]

    #include <inet.au3>
    $sRead = _INetGetSource("http://user.funpic.de/version.txt")
    MsgBox(0,"",$sRead)

    [/autoit]

    Mfg Spider

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Hi A ;)

    Meinst du so ungefähr?

    [autoit]

    #include <inet.au3>
    $aRead = StringSplit(_INetGetSource("http://user.funpic.de/version.txt"),@CRLF)
    MsgBox(0,"","Insgesamte Zeilen in der Datei: "&$aRead[0]) ; Wieviele Zeilen in der Datei insgesamt sind
    MsgBox(0,"",$aRead[5]) ;Zeile 5
    MsgBox(0,"",$aRead[2]) ;Zeile 2
    ;....

    [/autoit]

    Mfg Spider

  • GTA, sehr schöne Lsg.

    JEtzt noch wissen, wie man eine Zeile3 dran hängt, auch wenn man nicht wieß, welches die letzte Zeile ist.

    LG und genieße das Wetter. Sonne pur, die beste Kur !


    Crazy-A(lina)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • auch wenn das jetzt vllt nicht hier rein passt... aber wie habt ihr das mit dem updaten gelöst?
    Ich hab das mit ner Ini gemacht... d.h. mein "altes" programm schreibt eine .ini mit allen wichtigen settings. Mein "altes" Programm hat dann quasi eine updatefunktion (udf von mir):
    1. Lade ini runter und schaue nach ob Version bla > bla
    2. wenn ja mache unter @tempdir eine ini datei mit allen settings
    3. lade die update.exe runter (300kb oder so^^)
    4. Führe die update.exe aus & Exit

    Update.exe:
    Liest die ini aus @tempdir
    Z.b. gibt es in ini eine section copy wenn das prg z.B. mehrere Dateien benötigt als nur die exe selbst
    [settings]
    [infos]
    Hier stehen informationen die während des Updatevorgangs angezeigt werden
    Wenn es die ini datei abgehandelt hat startet es die neue version meines programmes :)

    Mich würde jetzt mal interessieren wie ihr des so gemacht habt... Vorteil von meinem: zumindest meine Programme haben nur EINE Updatefunktion und benötigen nur diese EINE update.exe :)

    MFG FireFlyer

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

  • IDEE ! ! !

    - Der User hat Version 1.0
    - in dieser wird abgefragt ob in der Datei http://www.deine_domain.de/version.txt die Versionsnummer größer ist als X.
    - wenn ja, starte download von z.B. setup1_1.exe
    - wenn nein, lasse die Datei / das Programm weiter durchlaufen.

    X kannst Du entweder in eine Ini schreiben oder im Programm die aktuelle Versionsnummer mit der online3 Versionsnummer abgleichen.

    Hoffe Du weißt was ich meine. Ansonsten spreche mich bitte nochmals auf den Beitrag an.

    Gruß, Crazy.


    K. O. in der ersten Runde, das ist Frauenboxen !!!! :rofl:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi A ;)

    Meinst du so ungefähr?

    [autoit]

    #include <inet.au3>
    $aRead = StringSplit(_INetGetSource("http://user.funpic.de/version.txt"),@CRLF)
    MsgBox(0,"","Insgesamte Zeilen in der Datei: "&$aRead[0]) ; Wieviele Zeilen in der Datei insgesamt sind
    MsgBox(0,"",$aRead[5]) ;Zeile 5
    MsgBox(0,"",$aRead[2]) ;Zeile 2
    ;....

    [/autoit]

    Mfg Spider

    der liest bei mir nur jede 2te zeile. also er liest 1 ,3 ,5 ,7... dabei ist dann 3 = 2 und 5 = 3...
    deshalb finde ich das mit @CR anstatt @crlf besser, da er dann jede zeile liest.
    gruß

    • Offizieller Beitrag

    Beim Spliten an @CRLF muss das Flag von StringSplit auf 1 gesetzt werden!

    [autoit]

    #include <inet.au3>
    $aRead = StringSplit(_INetGetSource("http://user.funpic.de/version.txt"),@CRLF,1)
    MsgBox(0,"","Insgesamte Zeilen in der Datei: "&$aRead[0]) ; Wieviele Zeilen in der Datei insgesamt sind
    MsgBox(0,"",$aRead[5]) ;Zeile 5
    MsgBox(0,"",$aRead[2]) ;Zeile 2
    ;....

    [/autoit]