Datei downloaden und in einen anderen Ordner verschieben?

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

Ansicht von 14 Antwort-Themen
  • 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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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. 🙂

Ansicht von 14 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.