Apache FTP上载问题-传输了0字节

Apache FTP上载问题-传输了0字节,apache,ftp,Apache,Ftp,在我们的一个项目中,我们使用Apache的FTP客户端API。 我必须将xml文件上传到FTP服务器,在那里进程将不断轮询该服务器目录。因此,使用upload API,我正在上载扩展名为.TRANSFER的xml文件,成功上载完整文件后,该文件将重命名为.xml文件 我面临的奇怪问题是,有时文件的大小是0字节。但同一个文件有时会被完全上传。当我查看日志文件时,传输的字节只有0 kb。所以我不确定问题出在哪里 我使用的是linux服务器和Apache的commons的FTP客户端API 任何调试提

在我们的一个项目中,我们使用Apache的FTP客户端API。 我必须将xml文件上传到FTP服务器,在那里进程将不断轮询该服务器目录。因此,使用upload API,我正在上载扩展名为.TRANSFER的xml文件,成功上载完整文件后,该文件将重命名为.xml文件

我面临的奇怪问题是,有时文件的大小是0字节。但同一个文件有时会被完全上传。当我查看日志文件时,传输的字节只有0 kb。所以我不确定问题出在哪里

我使用的是linux服务器和Apache的commons的FTP客户端API

任何调试提示和技巧都会很有帮助

问候,,
Srinivas

试着运行WireShark,看看线路上发生了什么?这可能会给你一个问题所在的线索


试着运行WireShark,看看线路上发生了什么?这可能会给你一个问题所在的线索


如果有时发生这种情况,它闻起来就像一端的防火墙配置。很难诊断,但开始(如果可以)尝试在主动/被动之间切换


请在此处查找更好的参考资料:

如果有时发生这种情况,它闻起来就像一端的防火墙配置。很难诊断,但开始(如果可以)尝试在主动/被动之间切换


请在这里查找更好的参考资料:

我不久前也遇到过这个问题

我注意到,如果文件大于某个特定的大小(对我来说是174字节左右),它确实被正确地传输了。较小的文件最终被创建为零字节文件

我相信这是Apache commons ftp代码中的一个bug。我通过获取源代码来修复它,并做了一个快速修复,结果是我构建的jar为我们工作


如果我没记错的话,我用socket.setTcpNoDelay(false)禁用了Nagle的算法,该socket用于commons ftp代码中的传输。

不久前我也遇到了这个问题

我注意到,如果文件大于某个特定的大小(对我来说是174字节左右),它确实被正确地传输了。较小的文件最终被创建为零字节文件

我相信这是Apache commons ftp代码中的一个bug。我通过获取源代码来修复它,并做了一个快速修复,结果是我构建的jar为我们工作


如果我没记错的话,我在commons ftp代码中用于传输的套接字上禁用了Nagle的socket.setTcpNoDelay(false)算法。

另一个可能的防火墙配置问题:如果您是从配置了iptables的linux/unix框中进行ftp,请确保已将表配置为允许ftp“连接跟踪”

在ftp事务过程中,您的客户端计算机建立ftp连接,然后发出ftp STOR命令上载文件。事务的初始部分在标准ftp套接字(20,21)上进行,然后切换到ftp服务器(如果处于活动模式)或客户端(如果处于被动(PASV)模式)选择的随机高编号端口。如果处于活动模式,则iptables可能不允许服务器在此随机选择的端口上与客户端机通信,您将获得一个名称正确且没有其他数据的零字节文件

您可以通过将事务从客户端切换到被动模式,或通过将客户端计算机上的iptables设置为执行“连接跟踪”来解决此问题:


另一个可能的防火墙配置问题:如果您正在从配置了iptables的linux/unix设备上进行ftp,请确保已将表配置为允许ftp“连接跟踪”

在ftp事务过程中,您的客户端计算机建立ftp连接,然后发出ftp STOR命令上载文件。事务的初始部分在标准ftp套接字(20,21)上进行,然后切换到ftp服务器(如果处于活动模式)或客户端(如果处于被动(PASV)模式)选择的随机高编号端口。如果处于活动模式,则iptables可能不允许服务器在此随机选择的端口上与客户端机通信,您将获得一个名称正确且没有其他数据的零字节文件

您可以通过将事务从客户端切换到被动模式,或通过将客户端计算机上的iptables设置为执行“连接跟踪”来解决此问题:


检查您的磁盘容量。我在从事Raspberry Pi项目时遇到过这种情况。我必须下载大文件,这导致RPi的SD卡很快填满。达到一定程度后,FTP上载0字节的文件。
不仅对于小型存储,这种情况也可能发生在任何地方。例如,您的服务器可以创建千兆字节的错误日志文件。过了一段时间,这些日志文件将填满您的服务器空间。同样的情况也会发生在FTP上传上。检查一下。干杯!

检查您的磁盘容量。我在工作时遇到过这种情况在Raspberry Pi项目上。我必须处理大文件下载,这导致RPi的SD卡很快被填满。达到一定程度后,FTP上载0字节的文件。 这不仅适用于小型存储,而且在任何地方都可能发生。例如,您的服务器可以创建千兆字节的错误日志文件。过了一段时间,这些日志文件将填满您的服务器空间。同样,FTP上载也会发生同样的情况。请检查。干杯