AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke FTP uploadversuche Zählen.
Thema durchsuchen
Ansicht
Themen-Optionen

FTP uploadversuche Zählen.

Ein Thema von ngott2 · begonnen am 27. Dez 2013 · letzter Beitrag vom 27. Dez 2013
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: FTP uploadversuche Zählen.

  Alt 27. Dez 2013, 15:53
Wenn beim Übertragen ein Fehler auftaucht, dann wird eine Exception geworfen, diese kann man einfach abfangen und wenn die Anzahl der Versuche überschritten ist, dann einfach weiterreichen.

Delphi-Quellcode:
procedure UploadFile( AFtpConnection : TIdFTP; const ASourceFileName : string; ARetries : Integer = 3 );
  var
    LCount : Integer;
    LSuccess : Boolean;
  begin
    LCount := 0;
    LSuccess := False;

    if not AFtpConnection.Connected
    then
      AFtpConnection.Connect;

    repeat

      try
        Inc( LCount );
        AFtpConnection.Put( ASourceFileName );
        LSuccess := True;
      except
        on EIdFTPException do
          begin
            if ( LCount >= ARetries )
            then
              raise;
          end;
      end;

    until LSuccess;
  end;
Aufruf mit
Delphi-Quellcode:
try
  UploadFile( IdFTP1, MyFileName, 3 );
  // Hier jetzt die Datei als versendet markieren
  ...
except
  on E: Exception do
    begin
      // Hier jetzt die Datei als failed markieren
      ...
      // und den Fehler weiterreichen
      raise;
    end;
  on E: EIdFTPException do
    begin
      // Hier jetzt die Datei als failed markieren
      ...
      // Wenn mit der Markierung der Fehler hinreichend behandelt ist, dann die Exception nicht mehr weiterreichen
    end;
end;
Damit hat man schon mal sichergestellt, dass die Übertragung funktioniert hat und die Datei nun auf dem Server sein sollte.

Zusätzlich kann dann noch geprüft werden, ob die Datei existiert, die Größe passt und mit TIdFTP.VerifyFile die HashWerte von Quelle und Ziel überprüfen.

Wenn da was nicht passt, einfach eine Exception werfen (Eine EIdFTPException würde sich bei dem Code anbieten).

z.B. so (nur mit VerifyFile)
Delphi-Quellcode:
procedure UploadFile( AFtpConnection : TIdFTP; const ASourceFileName : string; ARetries : Integer = 3 );
  var
    LRemoteFileName : string;
    LCount : Integer;
    LSuccess : Boolean;
  begin
    LCount := 0;
    LSuccess := False;

    if not AFtpConnection.Connected
    then
      AFtpConnection.Connect;

    LRemoteFileName := ExtractFileName( ASourceFileName );

    repeat

      try
        Inc( LCount );
        AFtpConnection.Put( ASourceFileName, LRemoteFileName );
        LSuccess := True;
      except
        on EIdFTPException do
          begin
            if ( LCount >= ARetries )
            then
              raise;
          end;
      end;

    until LSuccess;

    if not AFtpConnection.VerifyFile( ASourceFileName, LRemoteFileName )
    then
      begin
        AFtpConnection.Delete( LRemoteFileName );
        raise EIdFTPException.Create( 'FileHash mismatch' );
      end;
  end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (27. Dez 2013 um 15:58 Uhr)
  Mit Zitat antworten Zitat
 


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 13:36 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