FTPSClient来存储文件

时间:2018-08-28 12:53:30

标签: java ftp-client

我在使用Apache IO FTPSClient将文档放置在FTPS服务器上时遇到问题。我能够连接到服务器。我的状态很好(返回211)。如果我要求提供目录列表,我将得到空值。

// context is the SSL context
FTPSClient client = new FTPSClient(context);
InputStream stream = null;
    try {
        // fetching a document from a URL.  returning the input stream.
        // The stream is not null
        ContentDocDO docDo = soapClient.fetchDocument(docURL, contextOpt);
        stream = docDo.getStream();


        client.connect("someftpserver.com");
        client.enterLocalPassiveMode();
        client.login("someuser", "somepassword");
        client.changeWorkingDirectory("/RIM/test");
        System.out.println("client status: "+client.getStatus());
        // Changing the name of the document to be stored
        String fileName = docNameMap.get(name) + docDo.getContentType();

        client.storeFile(fileName,stream);
        stream.close();
    } catch (IOException e) {
         e.printStackTrace();
    }
     finally {
         try{
            if(stream != null){
                stream.close();
            }
         client.disconnect();
     }catch(IOException e){

         e.printStackTrace();
     }
}

我没有看到任何错误。我可以通过FileZilla连接到服务器。它使用基于TLS的显式FTP。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我的状态太狭窄了。我添加了以下行:

client.addProtocolCommandListener(new PrintCommandListener(
                            new PrintWriter(System.out)));

这让我看到尚未设置PROT。然后添加:

client.execPROT("P");

允许所有人通过。