我需要在不同的域上跨不同的FTP服务自动拉取(获取)各种文件,并且每周7天,每天24小时接收文件。
我的问题是,FTP服务通常允许在文件上传时下载文件。 This是可以在互联网上找到的问题的参考之一。
这可能会导致文件下载不完整。
我尝试使用Windows服务器和ftp FileZilla客户端复制情况,并按预期获得了一半的文件,因此没有安全机制来防止这种情况。所以可能很简单,没有办法阻止它从客户端。
所以我的问题是,如果有一些锚点,我的客户端可以测试以确定ftp服务器已经作为文件的整体。
我发现很难相信协议已经过时了,因为ftp没有提供安全机制,所以我必须遗漏一些东西,或者这是设计的。
更新 我正在使用C#开发自动化,但任何技术提示都可以提供帮助。解决方案需要愚弄教授,因为它对业务至关重要。
UPDATE2 上传是由许多不同的客户端进行的,因此无法与所有客户建立约定。
UPDATE3 此问题类似于问题How to detect that a file is being uploaded over FTP,但在update2中提供了额外的限制。
答案 0 :(得分:1)
我根据本帖和其他人的答案输入创建了以下自动化解决方案,以解决我的问题,意思是:在并发性很像的情况下,从不同品牌的不同FTP服务器中提取文件即将发生。
在这篇文章中使用信号文件或其他机制会要求强制客户改变他们与我们交互的方式,因此它是大多数情况下的解决方案,但不是我特定问题的解决方案。
所以,我的解决方案是:
此解决方案允许我们密集地轮询ftp文件夹。
答案 1 :(得分:0)
我相信从客户端来说,你无能为力。
最多,您可以在一段时间后重新检查文件大小,看看它是否已更改并采取获取新内容所需的任何步骤。
答案 2 :(得分:0)
FTP不是设计用于使用FTP服务器在两个客户端之间进行实时数据交换的协议。如果仍然上传要下载的文件,则不会向客户端发送任何通知,也不会在覆盖某人当前下载此文件的文件时发出任何指示。这不是FTP协议中的设计错误。真正的问题是,您正在尝试将协议用于不是为其设计的目的。
答案 3 :(得分:0)
所以你有这个场景:
[Publisher] --uploads file--> [FTP Server] --downloads file--> [You]
您有一位发布商正在将文件上传到FTP服务器,您可以从同一台FTP服务器下载。也可以有不同的FTP服务器实例,一个用于上传,一个用于下载,查看相同的目录,但这并没有太大的变化。
现在因为您正在查看同一目录,您,下载者会在创建文件系统条目后立即查看文件 - 当发布者的第一个字节可能仍在运行时。
基本上有三种解决方案: