FTP Upload (put) scheitert aus applikation heraus

2TAKTER

Lt. Junior Grade
Registriert
Okt. 2005
Beiträge
399
Hallo,

ich nutze AutoIt um Dateien auf ein FTP share hoch zu laden. Prinzipiell funktioniert das. Ich habe meine "App" unter Windows XP, Win 2003 Server und Windows 7 getestet, es läuft tadellos. Das ganze natürlich auch mit diversen FTP-Servern als Ziel!

Nun bin ich allerdings auf ein Phänomen gestoßen. In einem speziellen Netzwerk läuft meine App auf einem Windows 2003 Server. Dieser hängt in einer Domain und soll Dateien auf einen Linux-FTP schieben.

Die App kann die Session eröffnen und sich verbinden, allerdings beim PUT scheitert die Applikation. Ich habe das ganze dann manuell versucht mit den selben nutzerdaten, die auch das Programm verwendet, und siehe da, es geht. Nur das Programm selbst kann es nicht.

Bin dann auf die "Billigvariante" umgestiegen und habe statt des _FTP_PutFile befehls von AutoIt einfach ein CMD-Commando ausgeführt und das ganze quasi "via DOS" aufgerufen. Auch da der selbe Effekt. Der Befehl wird ausgeführt, aber die Datei wird nicht erzeugt.

Gibt es neben den normalen Nutzerrechten im FTP Protokoll noch andere Sachen die mir da dazwischen funken können?

Danke im Voraus
 
Könnte es sein, dass du den passiven FTP-Transfer verwenden musst?
Der Datentransfer bei FTP läuft ja über eine neue Verbindung die vom FTP-Server aufgebaut wird.
Wenn deine Firewall das blockt, musst du den passiven Transfer aktivieren, sonst kannst du nur Kommandos über Port 21 senden, aber keine Dateien schicken.
 
Hi,

danke für die Antwort. Leider hilft auch das nicht. Habe nun diverse Flags durchprobiert. Am Zeichensatz kann es, denke ich, auch nicht liegen, da die selbe Datei ja manuell hochgeladen werden kann.

Mir gehen die Ideen aus :freak:
Ergänzung ()

Also ich bekomme folgenden Fehler:
Rückgabewert der API 12003

Das ist ein recht häufiges Problem wie ich bisher ergoogeln konnte.
Detailliert sieht das ganze bei mir so aus (put):

200 Type set to I.
200 PORT command successful.
553 /get/bla.bla.bla.ro.doc: No such file or directory.

Das find ich ziemlich klar, denn genau das File will ich ja erst hoch laden.
Wenn ich mich manuell einlogge sehe ich auch klar das Verzeichnis "/get/" und da rein kann ich auch manuell besagte Datei rein laden.

Es handelt sich bei dem FTP-Server um einen Linux-Server. Erwartet der zuerst ein touch auf die Datei?
Ergänzung ()

GELÖST!

Oh man war der Fehler dumm...
mein Pfad hat sich relativ auf / (root) bezogen.
Da mein Server Linux ist und ich bereits in / war konnte er kein /get finden... also zwei möglichkeiten:

1. nach ./get/
2. nach get/

speichern.

Habe 1. gewählt. Dachte es liegt an Flags in der API usw. 7 stunden debugging für so einen mist :freak:
 
Zurück
Oben