CCZwei

Aktuelles

Allgemeines

Priv@tes

Unterhaltung

Lallus

Visual Basic

PDA/PPC2002

Navigation

Mischmasch

Chat / Webcam

 

| impressum | feedback | gästebuch | home |  

 

FTP - UPLOAD selbstgemacht

So sieht die Entwicklungsumgebung aus.

So sieht das gestartete Programm aus. Es versteckt sich später in der unteren Leiste und wird nur dann aufgerufen, wenn benötigt wird. Das OK in der Caption signalisiert, dass der Ladevorgang erfolgreich abgeschlossen wurde.

Für alle, die gerne etwas lernen wollen und vielleicht auch das eine oder andere Projekt für eigene Zwecke umsetzen wollen, will ich hier einmal kurz die Entwicklung eines Tools aufzeigen und die Funktionen erklären.

Es geht dabei um ein supereinfaches Hilfsmittel, das man bei der täglichen Arbeit mit dem Internet benutzen kann. Mit diesem kleinen Programm kann man auf den Server ein Upload fahren, ohne aufwändige Softwareprogramme zu bemühen.

Wer selbst seine Homepage so spartanisch editiert, wie ich dies tue, der kennt das Problem: die Seite, die zum Server gespielt werden soll, ist offline fertig erstellt und muss nun per FTP - Transport dem Provider überspielt werden, damit sie öffentlich im Internet ist. Je nach Gusto kommt jetzt eines der vielen FTP - Programme zum Zuge.

Ich benutze zum Beispiel Smart FTP, ein schönes Programm, das für Privatanwender sogar kostenlos ist. Doch manchmal ist es mir zu umständlich. Aus diesem Grunde habe ich mir dieses kleine Programm geschrieben, das in Windeseile kleine FTP - Uploads machen kann.

Wer dieses Programm benutzen will, der benötigt zum einen die MSVBVM60.DLL und die MSINET.OCX. Beide Pgramme sind in meinem Internetangebot vorhanden. (siehe unten)

Was geschieht bei einem solchen Vorgang, den man FTP - Upload nennt?

Zunächst muss die Adresse des FTP Servers des Internetproviders bekanntsein. Man bekommt sie mitgeteilt, wenn man den Dienst beim Provider bestellt. Das kann zum Beispiel - wie bei mir- ftp:://ftp2.kontent.de sein.

Zusätzlich benötigt man den Usernamen. Normalerweise ist es die Adresse der Internetseite ohne das www, wie z.B. Heinz-Mustermann.de.

Jetzt kommt noch das Passwort, das man sich normalerweise nach dem ersten Login selbst auswählen kann.

Mit diesen Angaben ist eine Verbindung zum FTP - Server möglich. Es geschieht zwar noch keine Aktion, doch die Verbindung steht.

Mit der Control von Microsoft MSINET.OCX ist ein Kinderspiel, die FTP - Funktionen abzubilden. Beginnen wir einfach einmal mit der Programmierung.

Die geladen Control erhält jetzt den Namen inet1

inet1.AccessType = icUseDefault
inet1.Protocol = icFTP
inet1.RemotePort = 21
inet1.URL = "ftp://ftp.provider.de"
inet1.UserName = "heinz-mustermann.de"
inet1.Password = "password"

In diesem Stück Programmcode ist die Verbindung zum Server realisiert. der eingegebene Accesstyp bezieht sich auf einen Servertyp ohne Proxy. Nutzt man einen Proxy, so kann man das hier einstellen. Der Protokolltyp ist logischerweise auf FTP gestellt und der ausgewählte Port ist normalerweise die 21, die für solche Aufgaben freigeschaltet wird.

Jetzt kommen wir zur Aktion. Es soll eine Datei vom Lokalen Directory auf das vorgegebene FTP - Directory überspielt werden. Es gibt da verschiedene Wege, wie meistens im Leben. Wir nutzen hier das Execute Kommando. Wenn die Verbindung hergestellt ist - und davon gehen wir ja aus - wird mit
inet1.EXECUTE, "PUT localfile ftpfile"
die Überspielung vorgenommen. Localfile kann hier zum Beispiel sein: C:\MeinInternet\allgemein.html. Entsprechend kann der ftpfile folgendes Format haben /www/allgemein.htm.

Wenn dieser Befehl abgeschickt wird, so hat das Programm einige Sekunden Arbeit, bis der File auf dem Server gelandet ist. Deshalb muss man das Programm hier anhalten, bis der Vorgang abgeschlossen ist. Da sind viele, die es probiert haben, gescheitert (wie ich aus einigen Newsgroups entnommen habe).

Eine gut funktionierende Lösung ist diese Routine :

Private Sub Warte_auf_Antwort()
Do Until Not Inet1.StillExecuting
DoEvents
Loop
End Sub

Solange inet1.StillExecuting einen Wert ungleich Null hat (den hat er, solange die Ausführung läuft) wird in der Schleife geblieben. Der Befehl DoEvents ermöglicht es, die Schleife zu verlassen, z.B. wenn man das Ganze abbrechen will.

Erst wenn die Schleife verlassen wird geht es im Programm mit dem Closebefehl weiter.
inet1.EXECUTE","CLOSE". Mit der Abfrage inet1.ResponseInfo kann man den Status der Übertragung abfragen. Kommt der Text: Übertragung erfolgreich beendet, so hat man gewonnen.

Die Downloads:

Wie bei Visual Basic Programmen üblich, muss eine fette Runtimebibliothek auf dem Rechner gespeichert sein. Oftmals ist sie bereits vorhanden und liegt im windows\system oder windows\system32 ordner. Den Sucher am besten einmal laufen lassen und nachsehen.<>

MSVBVM60.DLL Runtimebibliothek(1.4MB) laden

Auch die unten angegebene Control muss geladen sein. Man sollte sie in das windows\system32 Verzeichnis kopieren.

MSINET.OCX Internetcontrol (112 KB) laden

Schließlich noch das Programm als EXE - Datei

ftptest.exe FTP - Uploadprogramm (28 KB KB) laden

Und hier zum Schluß noch den kompletten Quellcode, um sein eigenes Programm zu basteln.

Private Sub btn_copy_Click()
Caption = "FTP - Server"
With Inet1
.AccessType = icUseDefault
.Protocol = icFTP
.RemotePort = 21
.URL = txt_ftp_server
.UserName = txt_ftp_user
.Password = txt_ftp_password
Call Warte_auf_Antwort
.Execute , "PUT " & txt_localdir & txt_page.Text & " " & txt_ftpdir & txt_page.Text
Call Warte_auf_Antwort
antwort = .ResponseInfo
.Execute , "CLOSE"
End With
If InStr(antwort, "erfolgreich") Then
Caption = "O.K."
Else
Caption = "Fehler"
End If
WindowState = 1
End Sub

Private Sub btn_edit_Click()
If Me.Height = 2595 Then Me.Height = 855 Else Me.Height = 2595
End Sub

Private Sub Warte_auf_Antwort()
Do Until Not Inet1.StillExecuting
DoEvents
Loop
End Sub

Private Sub btn_save_Click()
Open App.Path + "ftpserver.ini" For Output As #1
Print #1, txt_ftp_server
Print #1, txt_ftp_user
Print #1, txt_ftp_password
Print #1, txt_localdir
Print #1, txt_ftpdir
Print #1, txt_page
Close #1
btn_edit_Click
End Sub

Private Sub Form_Load()
WindowState = 1
Me.Height = 855
Caption = "FTP - Server"
exist = Dir(App.Path + "\ftpserver.ini")
If Len(exist) Then
Dim a(6)
Open "ftpserver.ini" For Input As #1
For i = 1 To 6
Line Input #1, a(i)
Next i
txt_ftp_server.Text = a(1)
txt_ftp_user.Text = a(2)
txt_ftp_password.Text = a(3)
txt_localdir.Text = a(4)
txt_ftpdir.Text = a(5)
txt_page.Text = a(6)
Close #1
End If
End Sub

 
   

   © 2003 by Wolfgang Back •  info@wolfgang-back.com