FileSystemWatcher für FTP
Wie kann ich implementieren einen FileSystemWatcher
für einen FTP-Speicherort (in C#). Die Idee ist, wenn etwas Hinzugefügt wird, auf den FTP-Speicherort möchte ich kopiere es auf meiner lokalen Maschine. Irgendwelche Ideen wäre hilfreich.
Dies ist ein follow-up meine vorherigen Frage Selektive FTP-download verwenden .NET.
Sie verwenden polling-Ansatz. Sie müssen überprüfen Sie die ftp-site in regelmäßigen Abständen zu überprüfen, ob eine neue Datei.
InformationsquelleAutor devnull | 2009-08-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du gehst zu haben, um zu implementieren, die eine polling-Lösung, wobei Sie immer wieder Fragen, für die Verzeichnis-Inhalte in regelmäßigen Abständen. Vergleichen Sie dies mit einer zwischengespeicherten Liste von der vorherigen Anrufs und ermitteln, was so passiert.
Es gibt nichts im FTP-Protokoll, die Ihnen helfen, mit dieser leider.
InformationsquelleAutor Lasse Vågsæther Karlsen
Den
FileSystemWatcher
Klasse funktioniert durch registrieren für Ereignisse, die mit dem host-Windows-Betriebssystem. Als solche, es ist beschränkt auf die auf lokalen Pfaden und UNC-Pfade zu Verzeichnissen auf Windows-Systemen. In der MSDN-Dokumentation aufFileSystemWatcher
erklärt die Wege, die Sie verwenden können, und einige der potentiellen Probleme bei der Verwendung der Klasse.Wenn Sie schauen, um alarmiert zu werden, wenn änderungen auf eine FTP-site, müssen Sie eine polling-Mechanismus, um Fragen nach dem aktuellen status der Dateien oder Ordner, die Sie interessiert sind in die überwachung. Sie werden in der Lage, um zu sehen, wenn Dateien Hinzugefügt und entfernt durch einen Vergleich von snapshots von der FTP-Website für die Veränderungen und die Anhebung ähnlichen Veranstaltungen, wenn Sie Veränderungen erkennen. Leider werden Sie nicht in der Lage sein, zu erkennen, benennen Ereignisse, aber auch andere Veränderungen sollten sein einfach um das zu überwachen Weise.
InformationsquelleAutor Paul Turner
Können Sie die
FileSystemWatcher
oder andere Weise, weil das FTP-Protokoll hat keine API zu informieren Sie einen Kunden über änderungen in das remote-Verzeichnis.Alles, was Sie tun können, ist, in regelmäßigen Abständen Durchlaufen der remote-Baum und Veränderungen.
Es ist eigentlich ziemlich einfach zu implementieren, wenn Sie die Verwendung eines FTP-client-Bibliothek, unterstützt Rekursives listing von einem entfernten Baum. Leider ist das eingebaute .NET-FTP-client, der
FtpWebRequest
nicht. Aber zum Beispiel mit WinSCP .NET-assembly version 5.9 (oder neuer) verwenden, können Sie dieSession.EnumerateRemoteFiles
Methode.Siehe den Artikel Gerade für änderungen in SFTP/FTP-server:
(Ich bin der Autor von WinSCP)
Obwohl, wenn Sie wirklich wollen, laden Sie einfach die änderungen, es ist eine Art einfacher. Verwenden Sie einfach die
Session.SynchronizeDirectories
in der Schleife.Wenn Sie nicht möchten, verwenden Sie eine 3rd-party-Bibliothek, die Sie haben zu tun mit Grenzen des
FtpWebRequest
. Für ein Beispiel, wie man rekursiv die Liste ein Verzeichnisbaum mit denFtpWebRequest
siehe meine Antwort auf C# - Download aller Dateien und Unterverzeichnisse per FTP.InformationsquelleAutor Martin Prikryl
Schreiben einen einfachen Dienst zum erstellen von FileSystemWatcher, zeigen auf Ihrem ftp-Speicherort.
Dann, wenn eine Datei hochgeladen oder geändert, wird ein event gefeuert werden, Ihren service, die Sie dann verwenden können, kopieren Sie die Datei auf Ihrer lokalen Maschine.
Datei.Kopieren etc.
Hav einen Blick auf: dieser blog
FileSystemWatcher
mit URLs arbeiten?UNC stellen, aber nicht die URL.
Sie können nicht verwenden Sie UNC-Pfade zu finden Standorte auf FTP. UNC-Pfade bedeuten SMB/lokalen Windows-Pfade.
InformationsquelleAutor Bravax
Monitor können Sie den FTP-Speicherort, indem Sie folgende Methode:
InformationsquelleAutor shafqat ali
Die Art, wie ich handle dies ist das hochladen einer ein element byte-array mit dem Namen ".ftpComplete". Die FileSystemWatcher-nur-Uhren ".ftpComplete" - Dateien, und Streifen, die am Ende zu wissen, die tatsächliche Datei hochgeladen. Da die".ftpComplete" - Datei ist nur 1 byte, es uploads in etwa so schnell, wie es erstellt auf dem FTP-server, so kann es gelöscht werden, sobald Sie tun, was Sie brauchen, um mit der Haupt-Datei hochgeladen
InformationsquelleAutor cabgef
Könnte man eine Robo-FTP-script, überwachen Sie die FTP-site für änderungen. Hier ist ein link zu einem Beispiel-Skript sendet eine E-Mail, wenn eine änderung erkannt wird: http://kb.robo-ftp.com/script_library/show/40
Schaute ich auf die Vorherige Frage, dass Sie miteinander verknüpft. Ich denke, Sie sollten in der Lage sein zu ändern die Robo-FTP-Probe und verwenden Sie die SETLEFT - Befehl mit der /"split" - option, um es analysieren die Namen der Ordner und ISO-Datei Anzahl der geänderten Datei und verschieben Sie dann die Datei an die richtige Stelle.
InformationsquelleAutor AlexPace