AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi File beim FTP-Transfer nicht überschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

File beim FTP-Transfer nicht überschreiben

Ein Thema von Gambit · begonnen am 22. Mär 2005 · letzter Beitrag vom 23. Mär 2005
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

File beim FTP-Transfer nicht überschreiben

  Alt 22. Mär 2005, 14:14
Hallo,
wenn ich mit den Indy Kompos IdFTP ein File auf einen Server hochlade, wird ein gleichnamiges gnadenlos überschrieben. Beim Download mit IdFTP.get kann ich das per Parameter verhindern. Wie kann ich das am Besten beim Upload realisieren? FileExists geht da ja wohl schlecht, oder?

Gruß

Gambit
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#2

Re: File beim FTP-Transfer nicht überschreiben

  Alt 23. Mär 2005, 13:58
So, hier mal meine Lösung:

Delphi-Quellcode:
FileExistsList:= TStringList.Create;
    for i:= 0 to aList.Count-1 do
    try
      begin
        IdFTP.List(FileExistsList, ExtractFilename(aList.Strings[i]), false);
        If FileExistsList.Count < 1 then
          IdFTP.Put(aList.Strings[i], ExtractFilename(aList.Strings[i])) else
          begin
            newFilename:= ansiReplaceText(ExtractFilename(aList.Strings[i]),
                           ExtractFileExt(ExtractFilename(aList.Strings[i])), '')
                           +'1'+ExtractFileExt(ExtractFilename(aList.Strings[i]));
            IdFTP.Put(aList.Strings[i], newFilename);
          end;
          FileExistsList.Clear;
      end;
    except
    ...
Die Methode(hier nur ein Ausschnitt) soll alle in aList enthaltenen Dateien(in der Liste steht nat. nur der Pfad) auf den FTP-Server kopieren. Bevor sie das mit idFTP.put() macht, guckt sie per idFTP.List() auf dem Server nach, ob eine Datei mit dem Namen vorliegt. Wenn ja, schreibt sie den Namen der Datei in die FileExstists-Liste.
Ich brauche in jedem Schleifendurchgang also nur gucken, ob in dieser Liste was drinsteht. Ist das der Fall wird die hochzuladene Datei unter anderem Namen abgespeichert, hier in diesem Beispiel wird an den Namen nur ne 1 gehängt.

Vielleicht kanns ja mal wer gebrauchen...

Gruß

Gambit
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#3

Re: File beim FTP-Transfer nicht überschreiben

  Alt 23. Mär 2005, 15:09
kleines Update:

Das muss nat. auch bei weiteren Versuchen funzen. Beispiel: man hat das File test.txt, welches auf dem Server schon existiert. Dann würde meine erste Version oben beim ersten mal test1.txt draus machen. Gut, versucht aber jemand noch einmal test.txt hochzuladen, würde test1.txt wieder überschrieben was ja nicht sein soll. Es müsste dann test2.txt entstehen. Deswegen folgende Änderung:

Delphi-Quellcode:
FileExistsList:= TStringList.Create;
      for i:= 0 to aList.Count-1 do
      try
        if checkPicture(aList, i) then
        begin
          IdFTP.List(FileExistsList, ExtractFilename(aList.Strings[i]), false);
          If FileExistsList.Count < 1 then
            IdFTP.Put(aList.Strings[i], ExtractFilename(aList.Strings[i])) else
            begin
              repeat
                j:= j+1;
                FileExistsList.Clear;
                newFilename:= ansiReplaceText(ExtractFilename(aList.Strings[i]),
                               ExtractFileExt(ExtractFilename(aList.Strings[i])), '')
                               +IntToStr(j)+ExtractFileExt(ExtractFilename(aList.Strings[i]));

                IdFTP.List(FileExistsList, newFilename, false);
              until FileExistsList.Count < 1;
              IdFTP.Put(aList.Strings[i], newFilename);
            end;
          end;
      except
      ...
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:39 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