在Virtuoso服务器上使用Apache Commons Net API的Java FTP教程

在Virtuoso服务器上使用Apache Commons Net API的Java FTP教程,java,ftp,apache-commons-net,virtuoso,Java,Ftp,Apache Commons Net,Virtuoso,对于我的程序,我需要能够上传和下载文件到一个文件服务器的持久性。我已经有一个OpenLink Virtuoso Universal服务器在运行,因为我想稍后利用它的三重存储功能 根据服务器的规格,应该可以通过FTP协议上传/下载文件。根据我收集的信息,我假设我必须指定一个有权上载文件的新用户,我找到了一个教程,解释了如何使用Java()中的Apache Commons Net API上载文件。在我上传一个文件后,Virtuoso服务器将承载该文件,并返回一个(http)URL,在服务器运行时,我

对于我的程序,我需要能够上传和下载文件到一个文件服务器的持久性。我已经有一个OpenLink Virtuoso Universal服务器在运行,因为我想稍后利用它的三重存储功能

根据服务器的规格,应该可以通过FTP协议上传/下载文件。根据我收集的信息,我假设我必须指定一个有权上载文件的新用户,我找到了一个教程,解释了如何使用Java()中的Apache Commons Net API上载文件。在我上传一个文件后,Virtuoso服务器将承载该文件,并返回一个(http)URL,在服务器运行时,我可以在该URL中访问该文件

所以我的问题是,是否有人可以告诉我如何配置Virtuoso服务器,以便能够上传和下载文件。Virtuoso正在本地主机上运行,因为我想将整个程序保存在我的开发计算机中。我已尝试通过以下方式上载文件并连接FTPClient:

FTPClient client = new FTPClient();
FileInputStream fis = null;

try {

    client.connect("localhost", 21);
    client.login("dba", "password");
    String filename = "text.txt";

    fis = new FileInputStream(filename);

    client.storeFile(filename, fis);
    client.logout();
} 
catch (SocketException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} 
catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
其中,“dba”是Virtuoso服务器附带的标准管理员帐户。此代码拒绝连接,我收到一个ConnectException

java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:268)
    at ftptest.TestFTP.main(TestFTP.java:18)
服务器正在运行,但无法连接到它。我可以通过localhost:8890访问管理控制台,因此我假设服务器正在运行

我是一个关于ftp服务器的新手,所以请保持你的答案简单。这也是为什么我不理解Virtuoso主页上关于FTP功能的文档的原因。请帮助我理解这个话题

如果您认为我使用Virtuoso服务器的方法有任何问题,请告诉我

谢谢你的努力


问候语

您知道ftp服务器是否正在运行吗?可以从命令行运行ftp吗?ftp localhost,如果这是windows客户端(很抱歉不知道Virtuoso),请确保windows防火墙在端口21上打开或完全关闭。与任何防病毒软件相同。该错误基本上表示您无法连接到本地主机上的端口21,主机正在拒绝连接。因为它是你电脑的本地设备,你可以做一个netstat-an,看看端口21上是否有一个listner。如果不是,可能是配置问题。谢谢您的回复。侦听器将被列为127.0.0.1:21,对吗?是啊,什么都没看见。我看到连接了127.0.0.1:8890,这应该是Virtuoso管理员权限。除了Virtuoso是一个提供FTP文件服务器的混合服务器外,我在网上找不到任何我能理解的信息。也许我应该切换到指定的FTP服务器。但是,我无法关闭防病毒和防火墙,因为我无法控制它们。看起来您需要查看Virtuoso文档。这可能是启动FTP服务器侦听器时的配置问题,也可能是在21以外的端口上侦听。这是标准的ftp端口,但产品可以使用其他端口号进行侦听。你的代码看起来不错,所以我怀疑一旦你解决了服务器启动问题,你就应该上路了。嘿,谢谢,我找到了。我不得不用以下行修改virtuoso.ini文件:[HTTPServer]…FTPServerPort=21。。。现在我可以存储文件并检索它们。然而,还有一个问题。我想从服务器获取一个(http而不是ftp)URL,在那里我可以访问文件,而无需通过ftp客户端下载。就像您手动将文件放入Apache服务器的htdocs文件夹一样。有人知道这是否可能吗?在我解决了这个问题后,我可以回答我自己的问题。好吧,看来我找到了解决问题的切入点。我可以通过以下方式访问该文件:。但是,此目录受密码保护。所以我假设我必须创建一个dav目录为公共的用户,或者通过http get请求发送用户凭据,对吗?