2011-07-27 33 views
1

我似乎在使用Apache的FTPClient 3.0.1将损坏的jar文件上传到远程服务器。我也将文件和文件传输类型设置为二进制。Apache FTPClient上传jar文件最终被破坏

FTPClient ftp = new FTPClient(); 

FileInputStream fis = new FileInputStream("filename"); 
ftp.setFileTransferMode(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE); 
ftp.setFileType(FTPClient.BINARY_FILE_TYPE); 
ftp.storeFile(fis); 
fis.close(); 
ftp.logout(); 
ftp.disconnect(); 

任何帮助将不胜感激!

杰森

+0

文本文件传输是否正确? –

回答

0

有些事情尝试:

你绝对100%确信:

一)storeFile()的返回true B)你是不是抛出一个异常的地方

如果你在调试器中逐步完成它,它是否完成了你的例程中的每个调用,并且该文件仍然在ftp服务器上部分结束?

该文件的哪部分没有进入ftp服务器?创建一个包含字节0-255的测试文件,重复5或10次,然后尝试上传该文件。然后下载结果,看看会发生什么事情。

+0

该文件正在到达服务器。我相信这一点,但它最终只会被损坏。上传的大小也有点大,这很奇怪。 – jason

+0

当您打开文件并逐字节比较它们时,结果如何?换句话说,腐败的特点。 –

4

我有同样的问题,使用setFileType(FTP.BINARY_FILE_TYPE)问题得到解决:

client.connect(this.HOST); 
client.login(USER, PASSWORD); 
client.setFileType(FTP.BINARY_FILE_TYPE); 
2

我有同样的问题,在我的情况的解决方案是使用client.setFileType(FTP.BINARY_FILE_TYPE);登录之后,而不是之前。