schwierigkeiten beim FTP Upload...

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

schwierigkeiten beim FTP Upload...

Beitrag von DrNo »

Hallo,
Ich hab vorher mal schnell für meinem FTP Server den Benutzer drno_test mit dem passwort 1234 erstellt. Mit dem Benutzer hat man (nur) Rechte im Verzeichnis http://drno.bplaced.net/test/ (Das Verzeichnis ist automatisch das Home-Verzeichnis) wenn man sich Verbindet was hochzuladen/löschen etc..
Dann hab ich mir einen Code zum hochladen erstellt:

Code: Alles auswählen

file$ = OpenFileRequester("Datei...", "C:\", "Alle Dateien (*.*)", 0)
InitNetwork()
MessageRequester("Info", "Es wird nun versucht eine Verbindung mit dem Server herzustellen...")
If OpenFTP(0, "drno.bplaced.net", "drno_test", "1234", Passiv, 21)
   MessageRequester("Info", "Die Verbindung wurde erfolgreich hergestellt.")
   MessageRequester("Info", "Es wird nun versucht die Datei "+file$+" auf den Server hochzuladen...")
  Else
   MessageRequester("Fehler", "Die Verbindung konnte nicht hergestellt werden.")
   End
EndIf
filepart$ = GetFilePart(file$)
ftpdir$ = GetFTPDirectory(0)
MessageRequester("Info", "Datei wird hochgeladen auf: "+ftpdir$ + filepart$)
If SendFTPFile(0, file$, ftpdir$ + filepart$, Asynchron)
   MessageRequester("Info", "Die Datei wurde erfolgreich hochgeladen.")
  Else
   MessageRequester("Fehler", "Die Datei konnte nicht hochgeladen werden.")
EndIf
MessageRequester("Info", "Die Verbindung wird nun geschlossen und das Programm beendet.")
CloseFTP(0)
End
Dann wollte ich mit dem Code ein "Testbild.jpg" (200kb) auf den Server hochladen. Die Verbindung konnte hergestellt werden aber beim Upload passiert dann nix mehr. D.h., wenn er Uploaden soll, dann zeigt meine Firewall kurz ein Outstream an aber dann passiert nixmehr. Dann hab ich nach 2 mins das Programm (weil nixmehr passiert is) beendet und auf dem Server nachgeschaut. Es war keine Datei da. Dann, als ich 2 Minuten später nochmal draufgeschaut hab, war die Datei auf einmal da allerdings 0 kb groß.

Was mach ich da falsch dass er die datei nicht hochläd?

gruß DrNo
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Declariere mal Deine Variablen, am besten auch EnableExplicit, das erspart
so manche unnötige Frage.
Die undeklarierte Variable passiv hat also einen Wert von 0, also #False
Wenn Du also Passiv benötigst, ist da was falsch.

Aber testen tue ich das erst, wenn die Variablen deklariert wurden :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Wie...wie deklariert man und wozu soll das gut sein? :oops:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

EnableExplicit

Define file$, filepart$, ftpdir$
Define passiv = #True, Asynchron

file$ = OpenFileRequester("Datei...", "C:\", "Alle Dateien (*.*)", 0)
InitNetwork()
MessageRequester("Info", "Es wird nun versucht eine Verbindung mit dem Server herzustellen...")
If OpenFTP(0, "drno.bplaced.net", "drno_test", "1234", Passiv, 21)
   MessageRequester("Info", "Die Verbindung wurde erfolgreich hergestellt.")
   MessageRequester("Info", "Es wird nun versucht die Datei "+file$+" auf den Server hochzuladen...")
  Else
   MessageRequester("Fehler", "Die Verbindung konnte nicht hergestellt werden.")
   End
EndIf
filepart$ = GetFilePart(file$)
ftpdir$ = GetFTPDirectory(0)
MessageRequester("Info", "Datei wird hochgeladen auf: "+ftpdir$ + filepart$)
If SendFTPFile(0, file$, ftpdir$ + filepart$, Asynchron)
   MessageRequester("Info", "Die Datei wurde erfolgreich hochgeladen.")
  Else
   MessageRequester("Fehler", "Die Datei konnte nicht hochgeladen werden.")
EndIf
MessageRequester("Info", "Die Verbindung wird nun geschlossen und das Programm beendet.")
CloseFTP(0)
End
Ausserhalb von Proceduren wird mit Define oder Global deklariert.
Innerhalb von Proceduren meist mit Protected.
Shared und Static gibts auch noch!

Durch die Deklaration wird der Gültigkeitsbereich festgelegt. Mit
EnableExplicit wird die erfolgte Deklaration überprüft, was z.b. vor
Tippfehlern schützt.

Variablendeklaration erleichtert also die Fehlersuche erheblich!
Codes, in denen das nicht gemacht wurde, deren Fehlermeldungen von
Usern ignoriere ich deshalb auch meist!

Die Befehle kannste in der Hilfe nachlesen. Auf jedenfall habe ich meine
Testdatei mit Erfolg hochgeladen :allright:

Werde die erstmal wieder löschen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Okay danke für die Hilfe.
Anscheinend haben noch andere den Code erfolgreich getestet... :mrgreen:
Antworten