Seite 1 von 1

FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 20:22
von adrian
Hallo zusammen

Wir müssen Bilder von der Festplatte per FTP auf einen externen Web-Server hochladen.

Ist soweit auch kein Problem über Asinet, sofern das Verzeichnis vorhanden ist.

hat jemand eine Idee, wie wir zuerst ein Verzeichniss erstellen können?
(dann müsste jedoch noch geprüft werden können ob das Verzeichnis vorhanden ist oder nicht)

Oder hat sonst noch jemand eine Idee?

adrian

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 20:51
von Tom
Hallo, adrian.

FTP kennt ein Kommando namens "MKD", also "Make Directory". Aber nicht alle FTP-Server unterstützen das - müsste man mal ausprobieren. Was ist von Dir? Client? Server? Oder beides?

http://tools.ietf.org/html/rfc959

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 21:41
von adrian
Salü Tom

Ja, FTP wohl, doch bei ASINET (ich möchte ja aus meinem Code heraus die Daten hochladen) nicht, oder?

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 22:03
von Tom
Hallo, Adrian.

Verstehe. Die FTPClient()-Klasse aus der ASINET-Library kennt aber nur ein paar Methoden, und dazu gehört die Ausführung von beliebigen FTP-Kommandos offenbar nicht. Es wäre interessant, zu sehen, welche Kommandos ASINET wie übermittelt - das kann man leicht sehen, wenn man einen lokalen FTP-Server (gibt es kostenlos zum Beispiel bei www.winftp.com) installiert, den dann kontaktiert (localhost) und sich das Protokoll anzeigen lässt. Möglicherweise könnte man dann eine FTPClient-Klasse ableiten und um die Senderei von Kommandos ergänzen; FTP ist nämlich eigentlich sehr simpel. Ich habe sowohl einen FTP-Server, als auch einen FTP-Client selbstgebaut, aber mit den Bibliotheken von MarshallSoft: www.marshallsoft.com

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 22:06
von Martin Altmann
Huhu Tom,
Tom hat geschrieben:Ich habe sowohl einen FTP-Server, als auch einen FTP-Client selbstgebaut, aber mit den Bibliotheken von MarshallSoft: http://www.marshallsoft.com
hattest Du das nicht mal mit XB2.NET gemacht? Und wenn ja, warum bist du davon weg?

Viele Grüße,
Martin

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 22:17
von adrian
Ich habe die LIB von Marshall gerade heruntergeladen, habe jedoch das Problem, dass ich nicht mehr debuggen kann, sobald ich die Include-Dateien eingebunden habe.

Klappt dies bei Dir?

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 22:46
von Tom
@Adrian: In der FCE32.CH steht eigentlich nix drin, das Debuggen verhindern könnte. :?:

@Martin: Stimmt. Der Client ist mit MarshallSoft, der Server mit Xb2.NET gemacht. Sorry für die informatorische Nachlässigkeit.

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 22:50
von Martin Altmann
Hallo Tom,
dann bin ich ja beruhigt.
Was hast Du denn heruntergeladen und was nutzt Adrian?
Für Adrian relevant wäre wohl: http://www.marshallsoft.com/csc4xb.htm
Du hast ja "nur" http://www.marshallsoft.com/fce4xb.htm

Viele Grüße,
Martin

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 22:55
von Tom
Für Adrian relevant wäre wohl
Warum? Er will doch einen FTP-Client haben, oder?

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 22:57
von Martin Altmann
Ach ja - hast ja Recht!
Ich war an Deinem Hinweis mit dem lokalen Server zum Testen hängen geblieben...

Gute Nacht (ist jetzt wohl langsam besser so),
Martin

Re: FTP (Verzeichnis)

Verfasst: Di, 26. Jan 2010 23:16
von brandelh
Hi,

PHIL hat eine FTP Klasse die viel kann !

Re: FTP (Verzeichnis)

Verfasst: Do, 04. Feb 2010 11:29
von brandelh
Hi,

ich habe jetzt auch den Bedarf einen FTP Server nach seinem Verzeichnis zu fragen ... aber ich bekomme noch nicht mal einen connect ... :angry5:

Nun mal die Fakten :!:
Dieser Code mit ASINET bekommt eine Verbindung zum Server ... Zugriff OK !

Code: Alles auswählen

#pragma Library( "ASINet10.lib" )
#include "UserData.ch"                 // MY_SERVER, MY_USER, MY_PW werden hier defined
#define TAB  chr(9)
#define CRLF chr(13)+chr(10)

PROCEDURE Main
   LOCAL cFtpServer := MY_SERVER
   LOCAL cUserName  := MY_USER
   LOCAL cPassword  := MY_PW
   LOCAL oFtp, cContents
   oFtp := FTPClient():new( cFtpServer, cUserName, cPassWord )
   IF .NOT. oFtp:connect()
      msgbox("Zugriff verweigert !"+CRLF+;
             "cFtpServer:"+TAB+"'"+cFtpServer+"'"+CRLF+;
             "cUserName:"+TAB+ "'"+cUserName+"'"+CRLF+;
             "cPassword:"+TAB+ "'"+cPassword+"'", "HB FTP Test")
   ELSE
      msgbox("Zugriff OK !", "HB FTP Test")
      // hier kommt der Rest
      oFtp:disconnect()
   ENDIF
RETURN
Dieser Code mit Phils Klasse bekommt keine Verbindung zum Server ... :( !

Code: Alles auswählen

#pragma Library( "XBFTP.LIB" )
#include "XbFtp.ch"
#include "UserData.ch"

*  METHODS:
*        :init( cAddress, cUserId, cPassword, cProxy, nPort )
*        :Open()                 // :connect() bei Asinet
*        :close()                - this also accepts a parameter - do not use it!
*                                  the parameter is entirely for internal use only
*        :destroy()              - a convenient way to properly close a connection
*        :getCurrentDirectory()
*        :setCurrentDirectory(cDirectry)
*        :createDirectory(cDirectry)
*        :deleteDirectory(cDirectry)
*        :deleteFile(cFile)
*        :renameFile(cFile, cNewName)
*        :getFile(cRemoteFile, cLocalFile, lOverWrite, fAttr, nTransferMode)
*        :putFile(cLocalFile, cRemoteFile, nTransferMode)
*        :directory(lSorted, cSpec)
#define TAB  chr(9)
#define CRLF chr(13)+chr(10)

PROCEDURE Main
   LOCAL cFtpServer := MY_SERVER
   LOCAL cUserName  := MY_USER
   LOCAL cPassword  := MY_PW
   LOCAL oFtp, cContents
   oFtp := XbFTP():new( cFtpServer, cUserName, cPassWord )
   IF .NOT. oFtp:open()
      msgbox("Zugriff verweigert !"+CRLF+;
             "cFtpServer:"+TAB+"'"+cFtpServer+"'"+CRLF+;
             "cUserName:"+TAB+ "'"+cUserName+"'"+CRLF+;
             "cPassword:"+TAB+ "'"+cPassword+"'", "HB FTP Test")
   ELSE
      msgbox("Zugriff OK !", "HB FTP Test")
      // hier kommt der Rest
      oFtp:close()
   ENDIF
RETURN

Re: FTP (Verzeichnis)

Verfasst: Do, 04. Feb 2010 15:11
von peternmb
also bei mir funktioniert diese Klasse von Phil problemlos.

Vielleicht einfach nur ein Tippfehler beim Servernamen?

Re: FTP (Verzeichnis)

Verfasst: Do, 04. Feb 2010 17:19
von brandelh
peternmb hat geschrieben:also bei mir funktioniert diese Klasse von Phil problemlos.
Vielleicht einfach nur ein Tippfehler beim Servernamen?
ein Tippfehler kann es nicht sein, denn mit ASINET und mit PowerBasic (da habe ich mir eine Klasse geladen) geht es mit den gleichen Anmeldedaten auch.

Eventuell hast du aber eine verbesserte Version, könntest du mir deine zur Verfügung stellen ?

Re: FTP (Verzeichnis)

Verfasst: Do, 04. Feb 2010 18:14
von peternmb
brandelh hat geschrieben:Eventuell hast du aber eine verbesserte Version, könntest du mir deine zur Verfügung stellen ?
das müsste die orginale ZIP-Datei sein - ist allerdings auch schon älter

Re: FTP (Verzeichnis)

Verfasst: Do, 04. Feb 2010 22:08
von brandelh
Hallo,

eben habe ich das Programm auf Win2000 hinter meiner Fritzbox probiert und beide Versionen funktionieren ...
Unter Win7 musste ich die EXE in der Firewall freischalten, das war aber keine Problem.
Die Probleme hatte ich mit einem XP SP3 Rechner an Vodafone ... auch dort hatte ich der Firewall die Erlaubnis erteilt,
aber vielleicht ist dabei bei der zweiten Datei etwas schief gegangen.

Die PowerBasic Version macht mittlerweile alles, aber bringt Fehler beim FileCopy :cry: es ist zum Mäuse melken ... :roll:

PS: Danke für die Datei, ich werde diese mit meiner vergleichen ...

Re: FTP (Verzeichnis)

Verfasst: Do, 04. Feb 2010 22:17
von brandelh
Hi,

deine Datei ist genau gleich mit der von Phils Site bei Pablo ... vermutlich liegt es wirklich an der Firewall vom XP Rechner ...
wenn ich an die verlorene Zeit denke :roll:

Re: FTP (Verzeichnis)

Verfasst: Sa, 06. Feb 2010 0:30
von brandelh
Hi,

Phils Klasse funktioniert nun bei mir Klasse :D

Sollte jemand Quellcode brauchen, kann ich was aus meinen Clientprogramm ausschneiden ;-) einfach melden.

PS: ich verschiebe den Thread mal ins WEB !

Re: FTP (Verzeichnis)

Verfasst: Mo, 08. Feb 2010 15:38
von adrian
Ja gerne. Ich muss von einem Server ein File runterladen und dazu ca. 40'000 JPG's (Bilder der Artikel) danach das ganze auf einen anderen Server verschieben. Da muss ich jedoch auch noch die entsprechende Verzeichnis-Struktur erstellen.

Nun, die ersten 300 Artikel gehen recht schnell (ca. 1 Sek. pro Artikel) danach ändert sich die Geschwindigkeit auf 8-10 Sek. pro Artikel, daher nicht brauchbar.

Vielleicht kann ich mit Deinem Code was anfangen.

adrian

Re: FTP (Verzeichnis)

Verfasst: Mo, 08. Feb 2010 18:11
von brandelh
Hi,

mein Beispiel lädt DBFs (einschränkbar) auf ein lokales Verzeichnis.
Zweck ist eine Datensicherung, aber auch für Test mit neuen Programmversionen ...

Das Problem beim Upload von einer Workstation ist die geringe Upload-Geschwindigkeit.
Du solltest also versuchen das Programm direkt auf dem Server laufen zu lassen ;-)

Re: FTP (Verzeichnis)

Verfasst: Mo, 08. Feb 2010 18:45
von adrian
Danke Dir, werde dies mal anschauen.

Das mit der Geschwindigkeit ist mir schon klar, doch es geht ja auch nur um Bilder von ca. 50kB und das problem ist nicht das Upload, es stockt bei der Erstellung von Verzeichnissen.

Bin gespannt, ob es mit dieser Version besser geht. Melde mich.

Adrian

Re: FTP (Verzeichnis)

Verfasst: Do, 18. Feb 2010 21:33
von adrian
Hallo Leute

Mit den Tools von Marshall klappt es soweit wunderbar, ausser:

Ich muss noch eine Datei von 16 MB hochladen. Bei ca. 3.8MB wird die Datei jedoch abgebrochen.

Das Problem könnte auch bei memoread liegen. Hier der Code-Teil
sZ := MemoRead("CONTENT.CSV")
oFtp:put("content.csv",sZ)

adrian

Re: FTP (Verzeichnis)

Verfasst: Fr, 19. Feb 2010 9:43
von brandelh
Hi,

ich lade Dateien mit 500 MB auf meinem lokalen Rechner ohne Probleme (2GB Hauptspeicher; Regel unter 1/2 des RAM bleiben).
Eventuell begrenzt der Server die Dateigröße ?

Re: FTP (Verzeichnis)

Verfasst: Fr, 19. Feb 2010 13:39
von adrian
Nun, ich habe dies auf 3 verschiedenen FTP-Server getestet, da ich auch an ein anderes Problem dachte.

Doch bei allen der gleiche Effekt.

Re: FTP (Verzeichnis)

Verfasst: Fr, 19. Feb 2010 14:38
von brandelh
Hi,

wenn es nach 3,8 MB abbricht, warum soll dann memoread() schuld sein ?

Das meinte ich mit meinem Hinweis auf die Dateigröße.
Teste doch mal mit dem Beispiel von mir (Phils XbFTP) ... Zum Testen habe ich mir mit FileZilla
einen eigenen Server in die Bude gestellt, den ich über die WEB IP Adresse auch aus dem Internet aufrufen kann.

Ich bin mir im Moment aber gar nicht sicher wie groß die Datei war mit der ich den UPLOAD versucht habe.