Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdFTP.Put hängt bei externem Dateizugriff (https://www.delphipraxis.net/88049-idftp-put-haengt-bei-externem-dateizugriff.html)

hsbc 9. Mär 2007 11:31


IdFTP.Put hängt bei externem Dateizugriff
 
Hallo allerseits,

ich lade per IdFTP.Put (Indy 10) Dateien auf den Server, was auch hervorragend funktioniert.

NUR: Wenn während des Hochladens die gleiche Datei von einem anderen Programm geändert wird, dann hängt Indy und kehrt nie wieder zurück.

Jetzt meine Frage: Gibt es eine Möglichkeit, mit der ich verhindern kann, dass während des Uploads kein weiterer Zugriff auf diese Datei möglich ist? Bzw. welche Möglichkeiten habe ich sonst noch, solch einen Absturz zu verhindern?

mfg
Herbert

IngoD7 9. Mär 2007 12:43

Re: IdFTP.Put hängt bei externem Dateizugriff
 
Ich kenne mich mit den möglichen (oder unmöglichen?) Sperrmechanismen von Windows und seinen Filesystemen nicht aus.

Eine Idee wäre aber vielleicht, kurz vor dem FTP.Put die Datei in ein Verzeichnis zu kopieren, von dem kein anderes Programm weiß und sie von dort upzuloaden.

hsbc 10. Mär 2007 07:11

Re: IdFTP.Put hängt bei externem Dateizugriff
 
Hallo Ingo,

ich habe deine Idee jetzt aufgegriffen und jeweils die zu übertragende Datei vor der Übertragung in eine temporäre kopiert und übertrage diese temporäre Datei. Funktioniert bis jetzt. Vielleicht kennt jemand doch noch eine elegantere Methode, eine Datei für die Zeit der Übertragung zu sperren.

mfg
Herbert

IngoD7 11. Mär 2007 12:55

Re: IdFTP.Put hängt bei externem Dateizugriff
 
Hallo Herbert,

Zitat:

Zitat von hsbc
Vielleicht kennt jemand doch noch eine elegantere Methode, eine Datei für die Zeit der Übertragung zu sperren.

ich - wie gesagt - leider nicht. Somit ist das nachfolgende auch offtopic - aber dennoch:

Vielleicht ist es gar nicht so gut, die Datei zu sperren. Ich meine, wenn eine Datei immer wieder oder gar laufend von anderen Programmen benutzt wird (z.B. eine Log-Datei oder sowas), dann sollte man diese Programme doch möglichst nicht durch eine Dateisperre bei ihrer Arbeit behindern, oder? Da halte ich es tatsächlich für viel besser, eine "Momentaufnahme" dieser Datei zum Upload zwischenzuspeichern - also so, wie du's jetzt auch machst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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