java - 551 输出文件错误

标签 java apache groovy ftp

我正在使用 apache org.apache.commons.net.ftp.FTPClient 将文件上传到 Apache FTPServer。当我调用 org.apache.commons.net.ftp.FTPClient.storeFile 时,它​​总是失败并出现“551 输出文件错误”错误。

这是我的程序

public class FileOperations {

   def ftp (params) {
         def ftp = new FTPClient()
         try {
            ftp.connect(params.host, params.port)
            println ftp.getReplyString()

            int reply = ftp.getReplyCode();

            if(!FTPReply.isPositiveCompletion(reply)) {
               ftp.disconnect();
               System.err.println("FTP server refused connection.");
               return
            }

            boolean successLogin = ftp.login(params.username, params.password)
            println ftp.getReplyString()
            if(!successLogin) {
                println "FTP login unsuccessful "+params.username
                return
            }

            ftp.setFileType(FTPClient.BINARY_FILE_TYPE)
            println ftp.getReplyString()
            ftp.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE)
            println ftp.getReplyString()

            String absoluteFilename=params.file
            def isSuccessful = ftp.storeFile(params.file,new FileInputStream(absoluteFilename))

            println ftp.getReplyString()

            ftp.logout()

    } finally {
        if(ftp.isConnected())
            ftp.disconnect()
    }
}

   static main(args) {
     def operations = new FileOperations();
     def params = [:]
     params.put "host","localhost"
     params.put "port",2121
     params.put "username","test"
     params.put "password","test"
     params.put "file","C:/tmp/sample.txt"

     operations.ftp(params)
   }
}

输出是

220 服务已准备好供新用户使用。

230 用户已登录,继续。

200 命令类型正常。

200 命令模式可以。

551/C:/tmp/sample.txt:输出文件出错。

我无法理解这个错误的含义。谁能帮我解决这个问题吗?

最佳答案

params.put "file","C:/tmp/sample.txt"

并且您将其用作远程文件名,该文件名应该是绝对或相对路径名,相对于 FTP 用户的 FTP 端根目录,可能只是“sample.txt”。 (FTP 服务器上没有诸如 C: 之类的设备。)

要读取本地文件名,您必须使用现在拥有的完整路径名:

String localFilename = "C:/tmp/sample.txt".
def isSuccessful = ftp.storeFile(params.file,new FileInputStream(localFilename))

关于java - 551 输出文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24603718/

相关文章:

java - 将 InsnList 拆分为基本 block

java - 有什么方法可以删除 java.io.IOException : Cannot run program "grep": CreateProcess error=2"in windows

java - 我不明白 apache 访问日志文件

java - 在 Groovy 脚本中执行 .jar

java - Groovy 语言有 ?.处理NullPointer异常的语法,scala中有类似的东西吗?

java - 触摸事件行为异常

java - joda LocalTime的Jackson连载

apache - .htaccess 文件不工作

linux - 从命令行在 CentOS 32 位上将 ActiveMQ 5.6.0 配置为 UNIX 服务

jenkins - 如何禁用 "build now"选项?