我想用Apache Commons Net实现FTP客户端,仅用于上传数据。连接和登录到FTP服务器正常。但是上传无法正常进行。文件有点像原始文件。并且文件已损坏。我尝试了图像,视频和文本文件。仅文本文件可以。
现在我在调试时看到了
boolean tmp=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
给我false
。因此无法设置。为什么?(也许这不是问题吗?)
这是我其余的代码
client=new FTPClient();
try {
int reply;
client.connect(url, port);
reply = client.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
client.disconnect();
System.err.println("FTP server refused connection.");
System.exit(1);
}
client.login(user, pw);
boolean xxx=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
client.setControlKeepAliveTimeout(300);
client.enterLocalPassiveMode();
if (client.isConnected())
{
try {
File file=new File(<FILE>);
FileInputStream inputStream = new FileInputStream(file);
OutputStream outputStream = client.storeFileStream(file.getName());
byte[] buffer = new byte[4096];
int l;
while((l = inputStream.read(buffer))!=-1)
{
outputStream.write(buffer, 0, l);
}
inputStream.close();
outputStream.flush();
outputStream.close();}
更改以下内容:
boolean xxx=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
应该:
boolean xxx=client.setFileType(FTP.BINARY_FILE_TYPE);
您已经将FileTransferModes与FileTypes混淆了。
可用的文件类型为:
可用的FileTransferModes是:
我想如果apache为这些常量类型引入了枚举,那么可以避免这种问题,但是该库对于java-5之前的运行时将不可用。
我不知道Java 1.4兼容性到底有多少问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句