Datei downloaden und in einen anderen Ordner verschieben?

Startseite Foren Deutsches LiveCode-Forum Datei downloaden und in einen anderen Ordner verschieben?

Dieses Thema enthält 14 Antworten und 2 Teilnehmer. Es wurde zuletzt aktualisiert von  JB1002000 vor 3 Monate.

  • Autor
    Beiträge
  • #14525

    JB1002000
    Teilnehmer

    Hallo, ich möchte folgendes realisieren:

    Meine erstellte App soll von meinem FTP-Server selbständig eine LiveCode Datei (Zusatzdatei.livecode) herunterladen, wenn die Datei noch nicht auf dem Handy verfügbar ist oder veraltet ist. Nun habe ich lange herum probiert, komme allerdings nicht zum Ziel. Wie kann ich eine Datei herunterladen und dann an einen beliebigen Pfad verschieben? Vielen Dank im voraus, für eure Hilfe!

  • #14527

    Klaus Major
    Moderator

    Hi JB1002000,

    auf der mobilen Platform haben wir NUR hier Schreibrechte -> specialfolderpath("documents")!
    Also solltest Du den Stack auch dort speichern.

    Schau mal im dictionary unter -> ftp
    nach, da gibt es auch einige Beispiele, wie man das benutzt.

    Falls Du nicht weiterkommst, hier wieder fragen.
    Beispiel:

    ...
    put specialfolderpath("documents") & "/zusatzdatei.livecode" into tZielDatei
    ## Prüfen, ob schon vorhanden:
    if there is a file tZielDatei then
      exit to top
    end if
    
    ## Nun der eigentliche Download direkt in die richtige Datei:
     put URL "ftp://DEIN_USERNAME_HIER:DEIN_PWD_HIER@ftp.example.net:2121/zusatzdatei.livecode" into url("binfile:" & tZielDatei)
    ...

    Diese Aktion ist "blocking", heisst, während LC die Datei lädt, kannst Du nichts anderes machen. Sollte aber kein Problem sien, wenn der Stack nicht allzu groß ist.

    Gruß

    Klaus

  • #14529

    JB1002000
    Teilnehmer

    Vielen, vielen Dank für die super schnelle und hilfreiche Antwort! Ich versuche es dann direkt und Melde mich dann nochmal.

  • #14539

    JB1002000
    Teilnehmer
    
    on mouseUp
       global Ordner
       put (specialFolderPath("documents")&"/LiveCode Projektdatenbanken/UpdateApp") into Ordner
       if there is a folder Ordner then
          put URL "ftp://backup-server:MEIN_Passwort@backup-server.bplaced.net:2121/App/UpdateApp/1/Zusatzdatei.livecode" into url("binfile:" & Ordner)
          answer "Datei gespeichert!"
       else
          create folder Ordner
          put URL "ftp://backup-server:MEIN_Passwort@backup-server.bplaced.net:2121/App/UpdateApp/1/Zusatzdatei.livecode" into url("binfile:" & Ordner)
          answer "Ordner erstellt und Datei gespeichert"
       end if
    end mouseUp
    

    Der Ordner ist vorhanden und das wird auch erkannt, dann kommt die Meldung "Datei gespeichert". Allerdings bleibt der Ordner leer.

  • #14541

    Klaus Major
    Moderator

    Hallo JB1002000,

    Du gibst als ZielDATEI einen ORDNER an!
    ...
    put (specialFolderPath("documents")&"/LiveCode Projektdatenbanken/UpdateApp") into Ordner
    ...
    put URL "ftp://...UpdateApp/1/Zusatzdatei.livecode" into url("binfile:" & Ordner)
    ...
    Das bedeutet, Du erstellt einen Ordner und willst eine Datei mit DEM SELBEN Namen wie der Ordner speichern! Das geht natürlich in die Hose und in der Runtime gibt es keine Fehlermeldung wie in der IDE, also geht das unbemerkt unter.

    Ich hatte gehofft, mein Beispiel sei unmissverständlich:
    ...
    put specialfolderpath("documents") & "/zusatzdatei.livecode" into tZielDatei
    ...
    😎

    Hinweis:
    Ordnung ist ja eine schöne Sache, aber da wir eh nicht in den Ordner auf dem Handy reingucken können, bedarf es eigentlich auch keiner Unterordner im "Documents" Ordner. 🙂

    Gruß

    Klaus

  • #14543

    JB1002000
    Teilnehmer

    Sorry, das war wirklich dumm, jetzt funktioniert es ordentlich. Ich danke dir für deine Gedult und Hilfe!

  • #14545

    Klaus Major
    Moderator

    Macht dann fünf Mark! 😀

  • #14580

    JB1002000
    Teilnehmer

    Hallo, ich habe mit dem Code etwas weitergearbeitet und habe folgendes Problem. Es werden zwar tatsächlich Dateien in den Ordner "UpdateApp" geladen, allerdings ohne Inhalt. In der Textdatei ist eine Zahl gespeichert, die sollte ja normalerweise heruntergeladen werden und in dem Ordner "SpeicherPath" gespeichert werden.

    Hier mein jetziger Code:

    
    on mouseUp
       //Variablen deklaration
       put (specialFolderPath("documents") & "/UpdateApp") into SpeicherPath
       put (specialFolderPath("documents") & "/UpdateApp/Zusatzdatei.livecode") into Zusatzdatei
       put (specialFolderPath("documents") & "/UpdateApp/Version.txt") into DateiVersion
       
       //Prüfen ob OrdnerZusatzdaten vorhanden ist
       if there is a folder SpeicherPath then
          put URL "ftp://backup-server:MEIN_PASSWORT@backup-server.bplaced.net:2121/App/UpdateApp/Zusatzdaten/Zusatzdatei.livecode" into url("binfile:" & Zusatzdatei)
          put URL "ftp://backup-server:MEIN_PASSWORT@backup-server.bplaced.net:2121/App/UpdateApp/Zusatzdaten/Version.txt" into url("binfile:" & DateiVersion)
       else
          create folder SpeicherPath
          put URL "ftp://backup-server:MEIN_PASSWORT@backup-server.bplaced.net:2121/App/UpdateApp/Zusatzdaten/Zusatzdatei.livecode" into url("binfile:" & Zusatzdatei)
          put URL "ftp://backup-server:MEIN_PASSWORT@zE.jX@backup-server.bplaced.net:2121/App/UpdateApp/Zusatzdaten/Version.txt" into url("binfile:" & DateiVersion)
       end if
    end mouseUp
    
  • #14582

    Klaus Major
    Moderator

    Hi jb1002000,

    Du kannst Dir etwas Tipparbeit sparen:

    ...
    ## Diese Zeile reicht für Dein Anliegen :-)
    if there is NOT a folder SpeicherPath then
       create folder SpeicherPath
    end if
    put url...
    put url...
    ...

    Hm, backup-server is dann wohl Dein Username, richtig?
    Sieht alles korrekt aus, Du solltest aber das Ergebnis der Aktionen checken:

    ...
    ## Mal vorsichtshalber MIT Klammern probieren!
    put url("ftp...")
    ## the result ist nur LEER bei Erfolg:
    if the result <> EMPTY then
      answer "Problem:" && the result
    end if
    put url("ftp...")
    if the result <> EMPTY then
      answer "Problem:" && the result
    end if
    ...

    Bitte hier posten, was in dem Dialog steht, sofern er auftaucht.
    Vielleicht gibt das Aufschluss darüber, ob und was falsch läuft.

    Gruß

    Klaus

  • #14584

    JB1002000
    Teilnehmer

    Also ich habe den Code wie folgt geändert:

    
    on mouseUp
       //Variablen deklaration
       put (specialFolderPath("documents") & "/UpdateApp") into SpeicherPath
       put (specialFolderPath("documents") & "/UpdateApp/Zusatzdatei.livecode") into Zusatzdatei
       put (specialFolderPath("documents") & "/UpdateApp/Version.txt") into DateiVersion
       
       //Prüfen ob OrdnerZusatzdaten vorhanden ist
       if there is a folder SpeicherPath then
          put URL ("ftp://backup-server:MEIN_PASSWORT@backup-server.bplaced.net:2121/App/UpdateApp/Zusatzdaten/Zusatzdatei.livecode") into url("binfile:" & Zusatzdatei)
          if the result <> EMPTY then
             answer "Problem:" && the result
          end if
          put URL ("ftp://backup-server:MEIN_PASSWORT@backup-server.bplaced.net:2121/App/UpdateApp/Zusatzdaten/Version.txt") into url("binfile:" & DateiVersion)
          if the result <> EMPTY then
             answer "Problem:" && the result
          end if
       else
          create folder SpeicherPath
          put URL ("ftp://backup-server:MEIN_PASSWORT@backup-server.bplaced.net:2121/App/UpdateApp/Zusatzdaten/Zusatzdatei.livecode") into url("binfile:" & Zusatzdatei)
          if the result <> EMPTY then
             answer "Problem:" && the result
          end if
          put URL ("ftp://backup-server:MEIN_PASSWORT@backup-server.bplaced.net:2121/App/UpdateApp/Zusatzdaten/Version.txt") into url("binfile:" & DateiVersion)
          if the result <> EMPTY then
             answer "Problem:" && the result
          end if
       end if
    end mouseUp
    

    Ich habe mir die Schreibarbeit erstmal noch nicht vereinfacht, mache ich dann wenn es richtig funktioniert.
    ich bekomme keine Meldung angezeigt.

  • #14586

    Klaus Major
    Moderator

    Mit einem FTP Client klappt das sicher ohne Probleme, oder?
    Hm, dann habe ich leider keine zündende Idee mehr im moment, sorry...

    Zur Sicherheit:
    INTERNET etc. hast du aber angeklickt bei ANDROID für die Android Standalone?
    Und da der Standalone Builder manchmal Probleme hat, die richtigen Libs etc. automatisch hinzuzufügen, bitte mal "Select inclusions for the standalone application" anklicken und bei INCLUSIONS die INTERNET Library, ziemlich weit unten, manuell anklicken.

  • #14588

    JB1002000
    Teilnehmer

    Hm, ich bin auch am verzweifeln. Schade das es daran scheitert. Ich habe es bisher auf Windows getestet.

  • #14590

    Klaus Major
    Moderator

    Wenn Du alles ohne Erfolg probiert hast, wie ich oben beschreiben habe, versuche es mal mit -> liburldownloadtofile

  • #14592

    JB1002000
    Teilnehmer

    Alles klar, da muss ich mich errstmal einarbeiten und schauen wie das geht, dauert einen Moment...

  • #14782

    JB1002000
    Teilnehmer

    Da leider nichts zum Erfolg führte, stelle ich die Arbeiten an dieser Stelle vorerst ein. Danke für die Hilfe. 🙂

Du musst angemeldet sein, um auf dieses Thema antworten zu können.