AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke FTP Uploadproblem bei großen Dateien

FTP Uploadproblem bei großen Dateien

Ein Thema von Mondengel · begonnen am 21. Jan 2010 · letzter Beitrag vom 22. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2   
Mondengel

Registriert seit: 26. Jan 2009
49 Beiträge
 
Delphi 6 Personal
 
#1

FTP Uploadproblem bei großen Dateien

  Alt 21. Jan 2010, 15:54
Hallo Leute,
ich hätt da mal ein Problem.

Ich hab mir einen kleinen FTP-Client gebastelt. Das Problem ist nur, dass bei größeren Datein der Client nicht überträgt.
Hab schon im Internet fleißig gesucht find aber nichts, was ansatzweise meinem Problem gleich kommt oder ich bin einfach zu blöd dafür .

Naja ich hab auch schon mir die OnWorkBeginn und OnWork angesehen. Das erstaunliche ist : wenn z.B. AWorkCountMax = 145.937.081 im OnWorkBeginn ist, überschreitet irgendwann im OnWork das WorkCount diesen Wert. Später wird sogar WorkCount negativ.

Ich hab echt keine Ahnung mehr was ich mache soll oder prüfen kann.

thx im vorraus.
Es gibt keine dummen Fragen nur dumme Antworten und wer es besserweis der ist selber ein Dummkopf
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: FTP Uploadproblem bei großen Dateien

  Alt 21. Jan 2010, 15:55
Welche Indy-Version?
  Mit Zitat antworten Zitat
Mondengel

Registriert seit: 26. Jan 2009
49 Beiträge
 
Delphi 6 Personal
 
#3

Re: FTP Uploadproblem bei großen Dateien

  Alt 21. Jan 2010, 15:59
Das ist Indy10
Es gibt keine dummen Fragen nur dumme Antworten und wer es besserweis der ist selber ein Dummkopf
  Mit Zitat antworten Zitat
Mondengel

Registriert seit: 26. Jan 2009
49 Beiträge
 
Delphi 6 Personal
 
#4

Re: FTP Uploadproblem bei großen Dateien

  Alt 22. Jan 2010, 08:08
Ich geb mal mein Code her. Wenn jemand drüberschaun könnt und mir Verbesserungsvorschläge gibt bin ich dankbar -.-
Angehängte Dateien
Dateityp: zip client_131.zip (149,5 KB, 8x aufgerufen)
Es gibt keine dummen Fragen nur dumme Antworten und wer es besserweis der ist selber ein Dummkopf
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: FTP Uploadproblem bei großen Dateien

  Alt 22. Jan 2010, 08:38
Hi,

leider kann ich das Programm nicht kompilieren, da mir einige Komponenten fehlen (Jedis, LMD, Abrevia).

Dennoch sind mir ein paar Sachen aufgefallen, die zwar das Problem nicht beheben, aber dem Code gutes tun:

Unit "MyFTPClient"
  • Da ist die globale Variable "FTPClient", oben drüber ist ne Klasse TMFTP, da sollte der FTPClient als privates Feld rein.
  • Warum leitest Du TMFTP von TForm ab? Brauchst Du doch gar nicht
  • Methoden MPut: Einmal mit TStream und einmal mit FileName, der Code der Methoden ist fast identisch. Das könnte man drastisch reduzieren, wenn Du in der Methode MPut, die einen FileName als Source entgegen nimmt, einfach einen Stream auf die gegebene Datei öffnest und dann die andere MPut-Methode, die einen Stream als Source entgegen nimmt, aufrufst, dadurch sparst Du Dir etwas Code und es gibt nur eine Stelle, an der der Dateitransfer abläuft.
  • Manche Methoden sind in Englisch, manche in Deutsch, das kann sehr verwirrend sein: Warum bleibst Du nicht bei einer Sprache?
  • Du greifst von TMFTP (z.B. bei MConnection) direkt auf die Mainform zu, das ist nicht gut, dadurch bist Du immer abhängig davon: Übergebe die benötigten Daten als Parameter
  • Wenn ich nicht ganz falsch liege, baust Du bei jeder Dateiübertragung (MPut) eine Verbindung auf und beendest sie wieder? Warum? Verbinde dich einmal, schiebe alle Dateien hoch und baue die Verbindung erst dann wieder ab, wenn entweder das Programm beendet wird, oder der Benutzer explizit auf einen "Disconnect" Knopf drückt. Das spart auch Übertragungszeit.

Das fiel mir beim ersten Drüberschauen auf.

Zum eigentlichen Problem werde ich mir gleich selbst mal eine kleine Anwendung schreiben, um zu überprüfen, ob es ein Problem in Deiner Anwendung ist, oder ob es generell ein Problem mit den Indy-Dateien ist.

Ab welcher Größe ungefähr funktioniert der Upload nicht mehr?
  Mit Zitat antworten Zitat
Mondengel

Registriert seit: 26. Jan 2009
49 Beiträge
 
Delphi 6 Personal
 
#6

Re: FTP Uploadproblem bei großen Dateien

  Alt 22. Jan 2010, 09:28
Zitat:
Warum leitest Du TMFTP von TForm ab? Brauchst Du doch gar nicht
Ist zwar eine schlechte Ausrede, aber ich war noch Anfänger als das zum erstenmal programmiert wurd

Zitat:
Wenn ich nicht ganz falsch liege, baust Du bei jeder Dateiübertragung (MPut) eine Verbindung auf und beendest sie wieder? Warum? Verbinde dich einmal, schiebe alle Dateien hoch und baue die Verbindung erst dann wieder ab, wenn entweder das Programm beendet wird, oder der Benutzer explizit auf einen "Disconnect" Knopf drückt. Das spart auch Übertragungszeit.
Das war von meinemVorgesetzen so gewünscht.

Ich hab mal geschaut wo die Probleme Anfangen. So ab 12 KB kommen kommische Werte und meine Processbar hängt.
Es gibt keine dummen Fragen nur dumme Antworten und wer es besserweis der ist selber ein Dummkopf
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: FTP Uploadproblem bei großen Dateien

  Alt 22. Jan 2010, 09:30
Hi,

also ich uploade hier gerade mit TIdFTP seit ca. 18 Minuten hoch und haben schon knapp 130mb übertragen.

die Progressbar zeigt auch ordentlich an.

Habe eig. nur ein TIdFTP auf die Form gemacht, die Daten zu meinem FTP-Account eingetragen.

Der ganze Code ist nur das hier:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  FTP.Connect;
  FTP.ChangeDir('raubi.eu');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if (openDialog1.execute) then
  begin
    FTP.Put(openDialog1.FileName, ExtractFileName(openDialog1.FileName), false);
  end;
end;

procedure TForm1.FTPWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
  progressbar1.Position := AWorkCount;
  progressbar1.Repaint;
end;

procedure TForm1.FTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
  progressbar1.Max := AWorkCountMax;
end;
  Mit Zitat antworten Zitat
Mondengel

Registriert seit: 26. Jan 2009
49 Beiträge
 
Delphi 6 Personal
 
#8

Re: FTP Uploadproblem bei großen Dateien

  Alt 22. Jan 2010, 09:40
Ich glaub ich seh den Fehler werd aber noch mal testen.

Bei deinen aufrufen von OnWork und OnWorkbeginn steht
Zitat:
Delphi-Quellcode:
procedure TForm1.FTPWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
Zitat:
Delphi-Quellcode:
procedure TForm1.FTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
  progressbar1.Max := AWorkCountMax;
end;
Bei mir wiederum

Delphi-Quellcode:
procedure TMFTP.Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
Delphi-Quellcode:
procedure TMFTP.WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
Ich hab ein Integer und du ein Int64. Das könnt das Problem mit fer Processbar lösen.
Es gibt keine dummen Fragen nur dumme Antworten und wer es besserweis der ist selber ein Dummkopf
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: FTP Uploadproblem bei großen Dateien

  Alt 22. Jan 2010, 09:48
Das sollte kein Problem.

In ein Integer passt noch 2147483647 rein, da bist Du mit 145937081 noch weit drunter. Das Problem muss also irgendwo anders liegen.

Nochmals zur Indy-Version, welche ist das genau? Ich hab es mit 10.2.5 getestet.

Die Version bekommst Du raus, wenn Du einfach fix nen neues Projekt erstellst, dort eine Indy-Komponente auf die Form legst und auf selbige rechts klickst.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: FTP Uploadproblem bei großen Dateien

  Alt 22. Jan 2010, 09:50
Zitat von Mondengel:
Zitat:
Warum leitest Du TMFTP von TForm ab? Brauchst Du doch gar nicht
Ist zwar eine schlechte Ausrede, aber ich war noch Anfänger als das zum erstenmal programmiert wurd
Das heißt aber nicht, dass man es nicht ändern kann
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz