Startseite › Foren › Deutsches LiveCode-Forum › Verzeichnis per ftp runterladen?
Schlagwörter: FTP
- Dieses Thema hat 20 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren, 5 Monaten von
foto2004.
-
AutorBeiträge
-
-
Oktober 17, 2020 um 06:35 Uhr #23634
Hallo Gemeinde,
mal wieder eine Frage, wie stell ich es an dass Schmier ein gesamtes Verzeichnis in einem Rutsch per FTP runterladen kann?
Es soll per ftp der Inhalt eines gesamten Verzeichnisses local runterladen werden und das bei einer Standalone APP unter DWIN10
-
Oktober 17, 2020 um 10:57 Uhr #23636
Hallo,
meines Wissens unterstützt FTP das nicht.
Einzeln holen per Loop geht aber problemlos.Um Dir das Verzeichnis anzeigen zu lassen:
put "ftp://" & userName & ":" & URLEncode(userPassword) \ & "@" & ftpServ into URLToGet -- ftpServ ist die URL & endet mit "/"! libURLSetFTPListCommand "NLST" put URL URLToGet into MyVar get the result ----- MyVar: . .. LogFile.txt
Wenn Du libURLSetFTPListCommand „LIST“ setzt, sieht das Ergebnis so aus:
MyVar: drwxrwxr-x 2 f00a00e5 w0124df9 4096 Nov 8 2017 . drwxr-xr-x 6 f00a00e5 w0124df9 4096 Aug 22 2019 .. -rw-r--r-- 1 f00a00e5 w0124df9 1062 Oct 16 01:44 LogFile.txt
(Ich hab hier nur 1 Datei, beachte die Linux-typischen „.“ & „..“!)
Viel Spaß!
-
Oktober 17, 2020 um 11:00 Uhr #23638
Eventuell klappt auch der FTP Befehl -> PWD (Print Working Directory)!?
Der listet „nur“ den Inhalt des FTP Ordners auf, wäre für Dein Anliegen etwas komfortabler:... libURLSetFTPListCommand "PWD" ...
BLÖDSINN! 😀
Siehe unten… -
Oktober 17, 2020 um 11:05 Uhr #23640
hmmmmm.
ich hatte es ja vorher mit get shell versucht ein batch zu starten aber das geht irgendwie auch nicht (die .bat geht am Windows einwandfrei). nun war meine Hoffnung das per FTP hier zu versuchen.
das libURLSetFTPListCommand ???? steht mir das jeden ftp Befehl um?
-
Oktober 17, 2020 um 11:42 Uhr #23641
Was genau meinst Du mit: … steht mir das jeden ftp Befehl um?
-
Oktober 17, 2020 um 12:43 Uhr #23646
Bitte vergiss meinen vorvorigen Post mit …PWD, das ist falsche Syntax.
So geht es richtig:... put libURLftpCommand("PWD", "ftp.example.org", Username, URLEncode(Password)) into field "Inhalt des FTP servers" ...
-
Oktober 17, 2020 um 15:11 Uhr #23648
Hallo,
„libURLSetFTPListCommand“ sagt dem FTP-Server, in welcher Form er auf die Anforderung eines „Directory Listing“ reagieren soll:
„NLST“ für Kurzform, „LIST“ für die ausführliche Form.
Das muß nur 1x pro Sitzung gesendet werden.„libURLftpCommand(„PWD“ …“ geht auf meinem FTP nicht – nur im Root-Verzeichnis („meinServer.de“) bekomme ich überhaupt eine Antwort, und die ist:
257 "/" is the current directory
Der User hat in dem Verzeichnis alle Rechte, und es liegen ein paar Verzeichnisse & 2 PHP Scripte drin.Sobald ich in der Server-URL ein „/“ habe, gibts:
error invalid host address
Viel Spaß!
-
Oktober 17, 2020 um 15:14 Uhr #23651
Hi,
wie @Klaus aber schon mal befürchtet hat, kann es sein, dass manche FTP-Server die Command nicht mehr unterstützen.
Ich habe eben auch verschiedene Wege ausprobiert und am besten hat es hiermit geklappt:get url ("ftp://" & FTPUSER & ":" & FTPPASS & "@" & FTPHOST & slash & tDirectory & slash)
Man bekommt dann die Liste wie oben mit Dateigröße, Bytes etc. und kann die Namen aber einfach mit set itemdelimiter und last item rausfischen.
Happy Coding
Torsten -
Oktober 17, 2020 um 15:37 Uhr #23653
Ha,
man kann die vereinfachte Form mit NLST auch beim url anwenden:libURLSetFTPListCommand "NLST" get url ("ftp://" & FTPUSER & ":" & FTPPASS & "@" & FTPHOST & slash & tDirectory & slash)
Das Ergebnis ist dann:
. .. datei1.txt datei2.txt
Happy Coding
Torsten -
Oktober 18, 2020 um 09:21 Uhr #23670
Hi,
da es ja nicht in einem Rutsch geht, wäre die Frage, wieso Du es dann nicht ganz normal über HTML machst?
Das Problem bei einfachem FTP ist nämlich, dass Du das Passwort für den FTP-Zugang im KLARTEXT über das Netz schickst und damit den Servern in der Mitte quasi den Schlüssel zu deinem Server gibst.
In der Community-Version von LC ist ja nur normales FTP möglich, ich würde also entweder auf die Indy mit SFTP umsteigen (tsNetGetFile) oder die Dateien im Verzeichnis ganz einfach per put downloaden und speichern:
put url ("http://servername/dateiname") into url ("binfile:" & "lokalerPfad/dateiname")
Happy Coding
Torsten -
Oktober 18, 2020 um 18:10 Uhr #23682
Hallo Torsten,
ich möchte da so ein Update realisieren. Ich habe mir da ein kleines Program erstellt um gewisse listen zu durchsuchen. Klappt alles prima nur möchte ich nicht immer wenn ich was ändere das ich jedesmal über eine Cloud-Freigabe alles rüber kopieren muss sondern einfach einen Button klicke und das wars. (Schöner Traum) Habe es, als Zwischenlösung mit einer batch Datei gelöst ist aber nicht das was ich eigentlich möchte. Ziel ist es einfach den Inhalt eines ganzen Verzeichnisses runter zu laden.
Habe auch schon daran gedacht eine Zip zu machen und zu entpacken …. naja weiß aber nicht wie ich die entpackt bekomme.
Ja es ist halt alles nicht so einfach, vor allem wen man es doppelt nimmt.
Ja dass mit der Indi-Version habe ich schon angepeilt und wird früher oder später auch kommen aber 500 im Jahr …. uff
LG Immanuel
-
Oktober 19, 2020 um 18:20 Uhr #23707
Habe auch schon daran gedacht eine Zip zu machen und zu entpacken …. naja weiß aber nicht wie ich die entpackt bekomme.
Da gibt es Livecode-Befehle dafür, schau mal nach revZip*** im Dictionary nach 🙂
Happy Coding
Torsten
-
-
Oktober 18, 2020 um 22:50 Uhr #23684
Wenn Du Zugang zu dem Server hast, und es klingt ja fast so, würde ich auch alles per HTTPS realisieren.
Zuerst ein CGI erstellen, was Dir den Inhalt eines bestimmten Ordners auf dem Server liefert***
und dann diese Liste abarbeiten mit -> LibUrlDownLoadToFile, was auch in der Community Version
funktioniert. Ist auf jeden Fall problemloser als alles per FTP zu versuchen.*** Da gibt es sicher zig PHP o.ä. Beispiele im Netz
-
Oktober 19, 2020 um 09:18 Uhr #23693
Hi Immanuel,
ich habe immer noch nicht genau verstanden:
1. Was liegt auf dem Server im Web und wie kommt es dahin?
2. Kann man die Dateien per URL http://meinsever/meinedatei runterladen?
3. Kannst Du auf dem Server selber Dateien erzeugen?
4. Wieso geht die bestehende Lösung mit der Batch-Datei nicht, wie lädt denn die Batchdatei die Dateien runter?Beste Grüße
Torsten -
Oktober 19, 2020 um 11:37 Uhr #23699
Huch,
da ist schon wieder ein Post verschwunden …
Sollte hier erscheinen.Viel Spaß!
-
Oktober 19, 2020 um 14:35 Uhr #23650
Hi,
wie @Klaus hier https://www.livecode-blog.de/forums/topic/ftp-server-dateien-listen/#post-9924 scjon mal befürchtet hat, kann es sein, dass manche FTP-Server die Command nicht mehr unterstützen.
Ich habe eben auch verschiedene Wege ausprobiert und am besten hat es hiermit geklappt:
get url ("ftp://" & FTPUSER & ":" & FTPPASS & "@" & FTPHOST & slash & tDirectory & slash)
Man bekommt dann die Liste wie oben mit Dateigröße, Bytes etc. und kann die Namen aber einfach mit set itemdelimiter und last item rausfischen.
Happy Coding
Torsten -
Oktober 19, 2020 um 14:35 Uhr #23698
foto2004,
ich mache genau das, was Du beschreibst. Nur mit einem anderen Ansatz:
1.) Ich habe 1 Datei auf dem Server, in der alles gelistet ist, was das Programm braucht. 1 Zeile pro Datei, Elemente tab-getrennt:
[Dateiname] » [CRC32-Wert] » [Ziel-Verz.] » [Quell-Verz.] » [Typ] Beispiel: myDBLib.rev » D309A2DA » modules » static » inuse
Das ist ein Library-Stack „myDBLib.rev“, der hier wohnen soll:
specialFolderpath(„documents“) & „/modules/myDBLib.rev“
Heruntergeladen wird er von:
[WebServerURL] & „/static/myDBLib.rev“
CRC32 ist ein Hash-Wert über die Datei – Änderung an Datei, neuer CRC32.
Der Typ beschreibt, was mit der Datei passiert: „Stack“ – nix tun; „inUse“ – „start using stack …“; „front“ – einfügen als Front-Script etc.2.) Im openStack-Handler läuft ein Loop, der diese Datei auswertet:
– Wenn Sie nicht in Ziel-Verz. ist, download von Quell-Verz..
– Wenn CRC32 nicht stimmt, neuer Download von Quell-Verz..
– Wenn alles passt, behandeln nach Typ.Fertig. Jedesmal wird alles gecheckt, ggf. erneuert. Programm ist immer aktuell.
Alles was ich machen muß, ist die geänderten Dateien ins richtige Verzeichnis aufm FTP zu schieben, und den CRC-Wert in der Dateiliste anzupassen. Den zeigt mir 7zip im Explorer-Kontext-Menü an.
Dann Programm aufm andren Rechner starten, und es aktualisiert sich.Ich nehme FTP zum Download, ist nach meiner Erfahrung schneller & stabiler als HTTP(s), und ich kann mit einer einfachen Zugangskontrolle arbeiten. HTTP(s) sollte aber genauso gehen.
Code für CRC32-Check:
function gzCRC32 theFile /* Code by Alejandro Tejada (capellan2000 at gmail.com) Mailing list: >http://runtime-revolution.278305.n4.nabble.com/ANN-CRC-32-LiveCode-stack-td4246201.html Source: > http://at.livecodejournal.com/stacks/CRC-32_LiveCode_Script.zip The Bytes returned are reversed to get compatible CRCs, by axwald */ put compress(URL ("binfile:" & theFile)) into tData put char -8 to -5 of tData into mki -- Url "binfile:data.gz" (axwald: ???) put char 4 of mki & char 3 of mki & char 2 of mki & char 1 of mki into mki -- axwald, reverse it repeat for each char n in mki put chartonum(n) into nft put baseconvert(nft,10,16) into kjh if the number of chars of kjh < 2 then put "0" before kjh put kjh after cdf end repeat return cdf end gzCRC32
Viel Spaß!
-
Oktober 19, 2020 um 16:41 Uhr #23705
Danke erst mal für deinen Ansatz.
Uff das muss ich erst mal alles verdauen und aufdröseln, sprich verstehen.
so weit reicht mein Verständnis noch nicht ganz aber ich versuche es mal nachzuvollziehen.Wird ein paar Tage dauern 😉 bis meine Gehirnwindungen das verarbeitet haben.
LG Immanuel
-
Oktober 22, 2020 um 15:24 Uhr #23784
Hallo Torsten,
1. es sind die Standalone Dateien die ich da hinauf lade
2. es sind aber auch Dateien die sich auch mal mit Namen ändern. Ja ich könnte sie auch ins Web-Verzeichnis schieben.
3. ja ich kann auf dem Server tun und lassen was ich möchte 😉
4. das mit der Batch funkt, wollte es aber alles in LC haben.
-
Oktober 22, 2020 um 19:22 Uhr #23786
1. es sind die Standalone Dateien die ich da hinauf lade
Mmh, im ersten Beitrag hast Du was von runterladen geschrieben. Wie ist es genau, wie kommen die Dateien auf den Server und wie runter?
3. ja ich kann auf dem Server tun und lassen was ich möchte ?
Könntest Du auch Livecode Server installieren?
Happy Coding
Torsten
-
-
Oktober 23, 2020 um 05:40 Uhr #23804
Nun die Dateien schiebe ich per FTP von mir rauf, und in der Arbeit wollte ich sie wieder, wenn ich wieder was geändert habe, per ftp runter laden und das ganze User sicher (du kannst dir nicht vorstellen was die alles so anstellen) runterladen. Wie gesagt es ist ein einfaches Program um in einer Tabelle nach bestimmten Daten zu suchen und in einer gewissen Form auszugeben inclusive pdfs usw.
ja ich könnte den LiveCode Server installieren nur arbeite ich zur Zeit noch mit der community von LC weil sich der umstieg noch nicht lohnt. Erst wen ich das andere Projekt in Angriff nehme werde ich es machen.
Wie gesagt momentan mache ich es mit einer Batch Datei die ich über LC aufrufe.
Wollte aber haben dass nicht immer die Konsole aufplopt wenn ich die Batch aufrufe.
Deswegen dachte ich mir dass es ja mit „nur“ LC auch gehen könnte.
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.