问题描述
|
我正在尝试将图像从Android手机(HTC Desire HD)上传到FTP服务器(在本地PC上)。图像将发送到FTP服务器,但已损坏。
并且方法(ftpClient.storeFile())引发IOException(错误的文件号)
请帮我。
这是损坏的图像链接:
http://imageshack.us/photo/my-images/820/komikb.jpg/
这是代码:
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(\"192.168.2.14\");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
ftpClient.setSoTimeout(10000);
ftpClient.enterLocalPassiveMode();
if(ftpClient.login(\"Administrator\",\"xxxx\"))
{
File sFile=new File(\"mnt/sdcard/DCIM/komik.jpg\");
FileInputStream fs= new FileInputStream(sFile);
String fileName = sFile.getName();
Boolean result = ftpClient.storeFile(\"/ftpfile.atspace.co.uk/\" + fileName,fs);
String has = \"\";
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
解决方法
Apache FTP客户端与此有关的几个突出问题。以下是有关如何使用Ftp4J通过Java有效地以编程方式处理ftp的说明。
下载Ftp4J:http://www.sauronsoftware.it/projects/ftp4j/download.php
然后在您的IDE中:
import java.io.File;
import java.io.IOException;
import it.sauronsoftware.ftp4j.FTPAbortedException;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPDataTransferException;
import it.sauronsoftware.ftp4j.FTPException;
import it.sauronsoftware.ftp4j.FTPIllegalReplyException;
public class FTP4J {
/**
* @param args
* @throws FTPAbortedException
* @throws FTPDataTransferException
* @throws FTPException
* @throws FTPIllegalReplyException
* @throws IOException
* @throws IllegalStateException
*/
public static void main(String[] args) throws IllegalStateException,IOException,FTPIllegalReplyException,FTPException,FTPDataTransferException,FTPAbortedException {
FTP4J ftp= new FTP4J();
ftp.transfer();
}
private void transfer() throws IllegalStateException,FTPAbortedException{
FTPClient client = new FTPClient();
client.connect(\"192.168.0.1\"); //conect to FTP server (in my case a vsftp on centos 6.4)
client.login(\"admn\",\"admn123\");//login to FTP Server
client.changeDirectory(\"/usr/share/tomcat/webapps/imgs/\"); //tell FTP4J where on the Ftp Server to send your file that you want to upload.
File fileUpload = new File (\"C:\\\\Users\\\\ih8w8\\\\Pictures\\\\1.jpg\"); //point FTP4J to the file you want to upload
client.upload(fileUpload); //upload it
client.disconnect(true); //close connection (note: you could also log out first,then disconn if youre not in a test env)
}
}
, 问题解决了。 FTPClient类具有“最后的数据包数据丢失错误”。但这在3.0.1 23.05.2011版本中得以解决。
您可以从有关错误的详细说明中看到:
https://issues.apache.org/jira/browse/NET-409
您可以下载固定版本
https://repository.apache.org/content/repositories/snapshots/commons-net/commons-net/3.0.1-SNAPSHOT/