将文件上载到文件服务器时出错

问题描述 投票:0回答:1

运行将文件上载到文件服务器的代码时出错。我正在使用Apache Commons Net File客户端来传输文件。我想上传图片文件。由于它不起作用,我尝试使用文本文件仍然得到相同的错误。

在下面找到我的代码:

    FTPClient clientFtp = new FTPClient();

    clientFtp.setFileType(FTP.BINARY_FILE_TYPE);
    clientFtp.setFileTransferMode(FTP.BINARY_FILE_TYPE);
    clientFtp.setSoTimeout(10000);
    clientFtp.enterLocalPassiveMode();
    result = clientFtp.storeFile("test", fs);

我得到的错误是:

Exception in thread "main" java.lang.NoSuchFieldError: _socketFactory_
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:513)
at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:388)
at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1388)
at sampe.test.files.Test.main(Test.java:95)

我检查了文件服务器日志以获取更多信息,我发现了这个:

(000028)8/16/2014 17:14:20 PM - root (127.0.0.1)> MODE N

(000028)8/16/2014 17:14:20 PM - root (127.0.0.1)> 504 Unknown MODE type

(000028)8/16/2014 17:14:20 PM - root (127.0.0.1)> PASV

(000028)8/16/2014 17:14:20 PM - root (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,199,159)

(000028)8/16/2014 17:14:20 PM - root (127.0.0.1)> disconnected.

所以,根据文件服务器日志,我觉得错误在以下行:

clientFtp.setFileTransferMode(FTP.BINARY_FILE_TYPE);

这段代码有什么问题吗?我将此文件类型更改为不同的文件类型,但仍未正确使用此文件类型。这也可能不是Java代码的问题。也许文件服务器或Windows有这方面的一部分?

当我将模式更改为:

clientFtp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);

日志是:

(000030)8/16/2014 18:04:00 PM - root (127.0.0.1)> TYPE I

(000030)8/16/2014 18:04:00 PM - root (127.0.0.1)> 200 Type set to I

(000030)8/16/2014 18:04:00 PM - root (127.0.0.1)> MODE S

(000030)8/16/2014 18:04:00 PM - root (127.0.0.1)> 200 MODE set to S.

(000030)8/16/2014 18:04:00 PM - root (127.0.0.1)> PASV

(000030)8/16/2014 18:04:00 PM - root (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,202,181)

(000030)8/16/2014 18:04:01 PM - root (127.0.0.1)> disconnected.

对于其他2我得到的日志为:

(000032)8/16/2014 18:05:31 PM - root (127.0.0.1)> 502 Unimplemented MODE type
java java-ee file-upload ftp fileserver
1个回答
0
投票

传输模式应为以下之一:STREAM_TRANSFER_MODE(默认),BLOCK_TRANSFER_MODECOMPRESSED_TRANSFER_MODE

删除clientFtp.setFileTransferMode(FTP.BINARY_FILE_TYPE)它应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.