首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINUX:如何检测ftp文件上传已完成

LINUX:如何检测ftp文件上传已完成
EN

Stack Overflow用户
提问于 2010-06-18 22:41:35
回答 6查看 15.8K关注 0票数 19

在我的项目中,我有一个文件上传功能。文件通过FTP上传。我需要配置一个侦听器,它将检查新文件,并仅在文件上传完成时调用脚本。因为如果我在检测到新文件后立即运行此脚本,它可能会开始处理未完全上载的文件,这将导致错误。有没有人知道这在LINUX上是不是可能的,我该怎么做?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-18 22:43:45

我会尝试使用inotify,事件代码IN_CLOSE_WRITE。

票数 13
EN

Stack Overflow用户

发布于 2011-05-28 14:44:57

Apache "Mina“ftp服务器(java)也许能够做你想要的事情,包括检测失败的上传,正如前面提到的here

引用:

来自Ftplet.afterCommand的

,您应该能够看到回复。对于FtpServer可以检测到的那些失败的传输(这会导致SocketException或IOException),这个值应该类似于426或551。

Ftplet概述here,包括响应代码。

afterCommand方法签名:

代码语言:javascript
复制
FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply)

您可以在覆盖的方法中检查reply.getCode()。您应该子类化DefaultFtplet,而不是从头开始实现Ftplet接口。

请注意,DefaultFtplet::afterCommand显示了如何检测正在响应的客户端命令。您可以检查STORSTOU,并使用回复代码426551来检测失败的上传。

然而,如果客户端应用程序决定将传输视为文件只是比其实际短,则这可能不会检测到客户端故意终止的上传。在意外断开连接的情况下,我认为回复代码检查会起作用。一个测试可以是杀死客户端应用程序,或者关闭客户端机器的网络接口。

要处理成功的上传(你最初的问题),你可以寻找成功的回复代码,即226

票数 6
EN

Stack Overflow用户

发布于 2010-06-18 22:44:04

看一看inotify

它不会自动监视子目录,所以如果你需要监控很多ftp账户(或者FTP客户端想要创建一个子目录并上传到那里),你需要自己处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3070555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档