我正在与一位客户合作,解决他们在尝试覆盖/“PUT”文件到我们的 SFTP 站点时遇到的错误。当根目录为空并且他们尝试上传文件时没有问题,但当他们尝试覆盖现有文件时就会发生错误。他们在 Java Caps 中尝试 put 命令时收到的错误是:
错误为:在 [PUT()] 中执行数据传输操作时出现批量 SFTP eWay 错误,消息=[从远程端收到 EOF [未知原因]]。|#]
当他们使用 WinSCP 或 FileZilla 放置文件时,它会顺利覆盖,没有任何错误。我们尝试过:
- 多个不同的文件
- 检查其 SFTP 用户权限
- 授予“每个人”对 Windows 中用户根目录的完全访问权限
- 重新创建用户账户
- 确保没有其他进程正在使用/锁定正在覆盖的文件
我们正在使用 Cerberus Professional FTP 服务器软件。还有什么想法我们可以尝试吗?
答案1
我无法在这个论坛发表评论,因此我将尝试回答:
- 他们在 FTP 中使用的用户名和 WinSCP/Filezilla 使用的用户名是否不同?
- FTP 和 WinSCP/Filezilla 的目标目标目录是否相同?
- 为了完整起见,在两种情况下传输的是同一个文件吗?
- 目标文件及其目录的文件权限和所有者/组是什么?
- 为什么这个标签为“java”?
- 目标机器的 Solaris 版本是多少?(由于“sun”标签而询问)
- WinSCP/Filezilla 的测试是否从与 FTP 相同的客户端机器完成?
- 文件末尾是否有行终止符?
抱歉问了这么多显而易见的问题,但由于它不起作用,所以需要涵盖所有基础。
[编辑]
回应您的评论,评论中的最后一个答案是“否”,这似乎是在回答“文件末尾是否有行终止符?”
所以,请尝试在文件末尾添加一个“空白行”,以便最后一个字符成为行终止符。原因:这很奇怪,但有时我似乎发现文件末尾没有行终止符也存在类似的问题。就好像接收端的代码需要行终止符才能完成文件。