Frage deutsch
~~~~~~~~~~~~~~
Wie greife ich von QB aus auf FTP zu?
Gibt es eine Möglichkeit Dateien (Text/HTML) auf einem FTP Server zu öffnen und Daten einzulesen?
 

Question English
~~~~~~~~~~~~~~
How to access remote files via the FTP protocol? ?
 

Antwort 1
~~~~~~~~
[ von Andreas Meile (
http://dreael.catty.ch - andreas*hofen.ch ) im QB-Forum, 30.12.2001 ]
 
Darüber findest Du umfassende Informationen in meinem Artikel über TCP/IP unter QB allgemein auf meiner Webseite unter
http://dreael.catty.ch/Deutsch/BASIC-Knowhow-Ecke/InternetMitQuickBASIC.html
 
In Deinem Fall ist das folgenden kleine Programm jedoch geeigneter:
 
' Dies holt
' ftp://username:passwort@host.domain.de/verzeichnis/datei.erw
' herunter :-)
'
OPEN ENVIRON$("TEMP") + "~FTPCMD.TMP" FOR OUTPUT AS 1
PRINT#1, "user "; username$; " "; passwort$
PRINT#1, "cd "; quellverzeichnis$
PRINT#1, "lcd "; zielverzeichnis$
PRINT#1, "bin"
PRINT#1, "get "; dateiname$
PRINT#1, "bye"
CLOSE 1
SHELL "ftp -n " + hostname$ + " <%TEMP%\~FTPCMD.TMP"
KILL ENVIRON$("TEMP") + "\~FTPCMD.TMP"
 

Hinweis 1: Bei anonymem FTP ist der Benutzername immer "ftp" und als Passwort sollte man die eigene e-Mail-Adresse verwenden (allgemeine Netiquette).

Hinweis 2: Anbei einige Erläuterungen zu der obenstehenden Befehlssequenz von Gono:
Der Open-Befehl öffnet eine Datei im temporären Verzeichnis, das als Umgebungsvariable abgelegt ist. Die kann man ja mit SET in der Konsole nachsehen. In der Datei werden dann die FTP-Befehle abgespeichert, die du später per SHELL an die command.com übergibst. KILL löscht die temporäre Datei wieder. %TEMP%, wird im SHELL wieder verwendet, um die Datei anzugeben. Du musst aber nicht unbedingt eine temporäre Datei erstellen. Kannst ja auch festlegen, wo sie liegen soll. Wichtig ist nur, dass du die richtige Datei an FTP übergibst. Testen kannst du die Befehle direkt in der Eingabeaufforderung. Gib sie einfach der Reihe nachn ein. Die FTP Befehle kannst du im Internet nachsehen. Zum Beispiel auf: http://www.hu-brlin.de/rz/comm/progr/ftpcmds.html .
 
 
 
Antwort 2
~~~~~~~~~~~~~~~~
[ von Andreas Meile (
qbasicde*dreael.ch ) im QB-Forum, 4.6.2004 ]
Dazu gibt es unter Anderem folgende zwei Ansätze :
 
*** 1.) HTTP unter reinem MS-DOS 6.22
Richte wie unter
http://dreael.catty.ch/Deutsch/BASIC-Knowhow-Ecke/InternetMitQuickBASIC.html
beschrieben eine DOSISODE-Vernetzung ein und verbinde auch Port 80 Deines Webservers mit dem Download. Anschliessend
 
GET /Unterverzeichnis/mit/Download/Datei.zip HTTP/1.0
Host: www.foobar.de
(2x Enter)
 
an den Socket senden und umgekehrt die Antwortdaten (enthalten den Download!) nach Header-Auswertung auf eine Datei niederschreiben.
 
 
*** 2.) FTP bei aktivem Windows
 
username$ = "ftp"
passwort$ = "anonymous@foobar.de"
remoteQuellVerzeichnis$ = "/Softlib/MSLFILES"
lokalZielVerzeichnis$ = "C:\DOWNLOAD\TCPWFW"
dateiname$ = "TCP32B.EXE"
ftphost$ = "ftp.microsoft.com"
OPEN ENVIRON$("TEMP") + "\~FTPCMD.TXT" FOR OUTPUT AS 1
PRINT#1, "user " + username$ + " " + passwort$
PRINT#1, "cd " + remoteQuellVerzeichnis$
PRINT#1, "lcd " + lokalZielVerzeichnis$
PRINT#1, "bin"
PRINT#1, "get " + dateiname$
PRINT#1, "bye"
CLOSE 1
SHELL "ftp -n " + ftphost$ + " <" + ENVIRON$("TEMP") + "\~FTPCMD.TXT"
KILL ENVIRON$("TEMP") + "\~FTPCMD.TXT"

[ The QBasic-MonsterFAQ --- Start Page: www.antonis.de/faq ]