Wie zu erkennen, wenn eine Datei hochladen über FTP
Meine Anwendung ist, Wache zu halten über eine Gruppe von Ordner, in denen Benutzer Dateien hochladen können. Wenn ein Datei-upload ist fertig, ich habe zu gelten eine Behandlung, aber ich weiß nicht, wie zu erkennen, wenn eine Datei noch nicht fertig hochgeladen ist.
Keiner Weise zu erkennen, ob eine Datei noch nicht freigegeben ist vom FTP-server?
Was hoffen Sie? Für eine Lösung, die fallen nicht in meine Antwort? Oder möchten Sie mehr details zu den vorgeschlagenen Lösungen?
Sie Liste mehrere Lösungen. Keiner von Ihnen mir helfen, da ich keinen Einfluss auf den Upload-client, und ich kann nicht auf den ftp-server. Ich kann nur Einfluss auf die Download-client.
Ich glaube nicht, dass es keine bessere Lösung für dieses Szenario, als die, die Sie gebucht haben. Aber mal sehen.
Sie Liste mehrere Lösungen. Keiner von Ihnen mir helfen, da ich keinen Einfluss auf den Upload-client, und ich kann nicht auf den ftp-server. Ich kann nur Einfluss auf die Download-client.
Ich glaube nicht, dass es keine bessere Lösung für dieses Szenario, als die, die Sie gebucht haben. Aber mal sehen.
InformationsquelleAutor user2223898 | 2015-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Allgemeine Lösung für dieses problem.
Einige FTP-Server sperren Sie die Datei, die hochgeladen wird, verhindern, dass Sie Zugriff auf Sie, während die Datei noch hochgeladen wird. Zum Beispiel IIS-FTP-server macht das. Die meisten anderen FTP-Servern nicht. Siehe meine Antwort an Verhindern, dass die Datei zugegriffen wird, wie es hochgeladen wird.
Gibt es einige gemeinsame Problemumgehungen, um das problem (Zitat in SFTP file-lock-Mechanismus, aber relevant für die FTP auch):
Siehe (mein) Artikel Sperren von Dateien beim hochladen /Upload temporäre Dateinamen ein Beispiel für die Umsetzung dieses Ansatzes.
Einige FTP-Server können Sie konfigurieren, ein hook aufgerufen werden, wenn ein upload fertig ist. Sie können Gebrauch machen von, dass. Zum Beispiel ProFTPD hat eine mod_exec Modul (siehe
ExecOnCommand
- Richtlinie).InformationsquelleAutor Martin Prikryl
Benutze ich ftputil zur Umsetzung dieser work-around:
Diese ganze ftp-Holen Sie alt ist und veraltete Technik. Ich hoffe, dass der Kunde mit einem modernen http-API der nächsten Zeit 🙂
wenn der Kunde den http verwenden, um uns Dateien senden, dann kann ich mit dem Empfang Teil. Ich kann sofort handeln, kann ich bestätigen, ich kann ablehnen, wenn die Datei nicht gültig ist ... zumindest in meinem Umfeld (ich benutze Django).
Sie sprechen über das schreiben eines http-Dienst. Wenn Sie schreiben Sie Ihren eigenen ftp-service können Sie das gleiche tun. Das ist ein nicht-argument. Versuchen Sie, einen put auf einen webdav-server. FWIW proftpd hat auch eine config-option zum aktivieren der zwei-Stufen-uploads. Dies ist eine Frage der Umsetzung - nicht Protokoll.
ja, du hast Recht. Können Sie mir einen Rat für ein einfach zu bedienendes framework zum implementieren eines ftp-Dienstes, die es mir erlaubt, die Daten zu validieren, bevor Sie es annehmen?
60 Sekunden.
InformationsquelleAutor guettli
Wenn Sie das Lesen von Dateien mit bestimmten Erweiterungen, dann verwenden Sie WINSCP für die Datenübertragung. Es wird eine temporäre Datei mit der Endung .filepart und es wird auf die tatsächliche Datei-Erweiterung, sobald es vollständig übertragen Sie die Datei.
Ich hoffe, es wird jemand helfen.
InformationsquelleAutor Rama Krishna
Dies ist ein klassisches problem mit FTP-übertragungen. Den nur meist zuverlässige Methode, die ich gefunden habe, ist eine Datei senden, dann senden Sie eine zweite kurze "marker" - Datei nur zu sagen, dass der Empfänger die übertragung des ersten abgeschlossen ist. Sie können eine Datei Namenskonvention und überprüfung nur auf die Existenz der zweiten Datei.
Bekommen Sie vielleicht Lust, und stellen Sie den Inhalt der zweiten Datei eine Prüfsumme der ersten Datei. Dann könnte man überprüfen, wird die erste Datei. (Sie don ' T haben das problem mit der zweiten Datei, da Sie nur noch warten, bis die Datei Größe = Prüfsumme Größe).
Und natürlich funktioniert dies nur, wenn man den Absender zu senden, eine zweite Datei.
Und eine clevere Lösung ist es-aber ich weiß nicht, ob ich wirklich vertraue (aber dann, ich bin paranoid). Du hast Recht, natürlich, FTP-sux.
InformationsquelleAutor A. L. Flanagan