![]() |
Upload per FTP
Hi,
ich will, dass mein Programm bei jedem Start eine bestimmte Datein in einen Ordner meines FTP-Servers hochläd. Nunja dazu muss man sagen, ich bin Anfänger :zwinker: was das Ganze nicht einfacher macht :( Ich weiß, ich sollte mit kleineren Dingen anfangen, aber des tu ich auch :P. Bloß hierbei brauch ich dann doch eure Hilfe, das Programm an sich ist recht klein und simpel, bloß will ich eben, dass es nebenbei noch per FTP eine Datei hochläd. Wie mache ich sowas? Ein einfacher Quellcode/Seite würde mir auch reichen =) Also es muss wirklich nur die Verbindung zum Server hergestellt, und eine Datei hochgeladen werden. Mehr eigentlich nicht. Danke :thumb: |
Re: Upload per FTP
Schau dir doch die Beispiele deiner Netzkomponentensammlung deiner Wahl an, da sollte was Brauchbares dabei sein
|
Re: Upload per FTP
Hallo Delphi08,
ich habe mich auch schwer getan mit diesen Dingen. Fertiger Code hilft Dir aber nicht wirklich. Ein nettes Tutorial kann da Wunder wirken, sollte man kein Buch zu Hand haben. Probier's doch mal mit Google: "delphi ftp upload" Da kommt schon eine Menge, oder hiermit: ![]() Gruss ein mitleidender ;O) |
Re: Upload per FTP
Wenn es einfach sein darf, dann kann man auch die ftp.exe von Windows ansteuern.
Man gibt mit dem Parameter -s eine Steuerdatei mit. Die Steuerdatei sieht z.B. so aus:
Code:
Diese Steuerdatei ist mit Hilfe eines TStringList Objekts sehr schnell und einfach erstellt.
open ftp.myserver.de
user admin pass geheim cd /upload put C:\temp\bericht2008.pdf bye Dann nur noch den Windows Systempfad ermitteln und ftp.exe mit ShellExecute starten. Noch interessanter wird es, wenn man WinSCP von Aussen fernsteuert. Dann kann man auch schwierige Dinge wie z.B. FTP über Proxyserver oder Secure-FTP in den Griff bekommen. Natürlich muss dann WinSCP installiert sein. |
Re: Upload per FTP
Versteh ich nicht ganz, sprich ich rufe ftp.exe dann so auf, oder?
Delphi-Quellcode:
s ist vom Typ TStringList oder?
WinExec(PChar('C:\WINDOWS\system32\ftp.exe -s'), SW_SHOWNORMAL);
Wie schreibe ich die Steuerbefehle in s?
Delphi-Quellcode:
open ftp.myserver.de
user admin pass geheim cd /upload put C:\temp\bericht2008.pdf bye |
Re: Upload per FTP
nimm wie schon empfohlen die Indys,
da kannste ganz einfach einen ftp ansteuern, musst nicht auf die sys32 kompos vertrauen, und man kann nicht auslesen, wie die daten sind, da du dafür funktionen gibt. Jedoch solltest du wissen, dass man jedoch ganz einfach mit ner firewall/nem Sniffer, die daten abrufen kann, also mach nen extra user in n extra ordner der nur writerechte hat |
Re: Upload per FTP
|
Re: Upload per FTP
Zitat:
Funktioniert auch super =) Also die Datei finde ich dann auch wirklich im richtigen FTP Verzeichnis. jetzt kommt das große ABER, ich bekomme vom Debugger die Meldung "Zugriffsverletzunge bei 0xfeeefeee: Lesen" (-> Programm beenden). Will ich das Programm nochmals aufrufen, so klappt dies nicht, manch eine andere .exe funktiert bis zum nächsten Neustart auch nicht mehr. Was ich eben bei Wiki gefunden habe war folgendes Zitat:
Zitat:
|
Re: Upload per FTP
Hallo,
vielleicht liegt es daran, dass das Handle hOpen nicht geschlossen wurde? Versuche mal, hinter dem InternetCloseHandle(hconnect); noch InternetCloseHandle(hopen); einzufügen. mfg Herbert |
Re: Upload per FTP
hab ich eben versucht, aber der Fehler tritt immer noch auf.
Delphi kann wohl das Programm nicht beenden, muss immer erst komplett aus Delphi raus. Hab es mal als Konsolenanwendung ausgelagert. Ruf ich es nach dem Absturz erneut auf, bekomm ich nur noch den schwarzen Kasten, keinen Error mehr, sondern das Programm hängt sich einfach auf. Gehe ich mit dem Debugger durch das Programm, so muss der Fehler wohl in dieser Zeile liegen:
Delphi-Quellcode:
Denn ab hier geht nichts mehr.
hconnect := InternetConnect(hopen, pchar(server), port, pchar(username), pchar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
Mein Aufruf sieht wie folgt aus:
Delphi-Quellcode:
Verzeichnis "Test" existiert auf dem Server, und nach dem 1. ausführen ist es auch dort zu finden. Also dürfen die Parameter eigentlich stimmen.
putfile('meinserver.de', 'meinBenutzer', 'dasPasswort', 'C:\loewe.jpg', '/Test/loewe.jpg');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz