远程服务器上的存储文件方法的 FTPSClient 错误

问题描述

我正在尝试使用 FTPSClient 将 csv 保存到远程服务器。 我在做什么:

object SandBox extends App {


  val client = new FTPSClient("TLS",false)
  var fis: InputStream = null

  try {
    client.setConnectTimeout(6000)
    client.connect(HOST,PORT)
    client.enterLocalPassiveMode
    client.login(USER,PWD)

    var reply = client.getReplyString
    
    client.execPBSZ(0)
    client.execPROT("P")
    client.setDataTimeout(60000)
    client.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)))
    
    reply = client.getReplyString
  
    client.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE)

    reply = client.getReplyString

    client.setBufferSize(1024)
    
    reply = client.getReplyString

    fis = new FileInputStream(new File(PATH/File.csv))

    val bool = client.storeFile("file.csv",fis)

    if(!bool){
      import java.io.IOException
      throw new IOException("Failed to store file  due to: " + client.getReplyString)
    }

    client.logout()
  } catch {
    case e: Exception =>
      e.printstacktrace()
  } finally {
    try {
      if (fis != null) {
        fis.close()
      }
      client.disconnect()
    } catch {
      case e: Exception =>
        e.printstacktrace()
    }
  }

}

尝试存储文件时发生错误;这是日志:

> TYPE I
> 200 TYPE is Now 8-bit binary 
> PASV 
> 227 Entering Passive Mode (46,105,77,55,191,238)
> STOR PlaneteTechnologieFR_1_BRUN-20210301.csv
> 150 Accepted data connection
> org.apache.commons.net.ftp.FTPConnectionClosedException: Connection
> closed without indication.    at
> org.apache.commons.net.ftp.FTP.__getReply(FTP.java:324)   at
> org.apache.commons.net.ftp.FTP.__getReply(FTP.java:300)   at
> org.apache.commons.net.ftp.FTP.getReply(FTP.java:732)     at
> org.apache.commons.net.ftp.FTPClient.completePendingCommand(FTPClient.java:1853)
>   at
> org.apache.commons.net.ftp.FTPClient._storeFile(FTPClient.java:694)
>   at
> org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:639)
>   at
> org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:2030)
>   at SandBox$.delayedEndpoint$SandBox$1(SandBox.scala:48)     at
> SandBox$delayedInit$body.apply(SandBox.scala:17)  at
> scala.Function0.apply$mcV$sp(Function0.scala:39)  at
> scala.Function0.apply$mcV$sp$(Function0.scala:39)     at
> scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
>   at scala.App.$anonfun$main$1$adapted(App.scala:80)  at
> scala.collection.immutable.List.foreach(List.scala:392)   at
> scala.App.main(App.scala:80)  at scala.App.main$(App.scala:78)    at
> SandBox$.main(SandBox.scala:17)   at SandBox.main(SandBox.scala)

FTP连接成功;我也可以制作目录。 我的目录权限为 755,文件权限为 644。

我也通过 Filezilla 做了一些测试,我可以创建文件删除文件、创建目录...

你能帮我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...