Does FTPClient corrupt images when uploading to ftp server on Android?

I am trying to upload images to an FTP server (on my local PC) from an Android phone (HTC Desire HD). Images go to the FTP server, but they are corrupted.

And the method (ftpClient.storeFile ()) throws an IOException (Bad File Number)

Please help me.

This is a broken image link:

http://imageshack.us/photo/my-images/820/komikb.jpg/

And this is the code:

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(); } 
+7
source share
2 answers

The problem is resolved. The FTPClient class has a "last data packet loss error." But this was decided with the release of 3.0.1 05/23/2011.

You can see a detailed explanation of the error: https://issues.apache.org/jira/browse/NET-409

You can download the patched version https://repository.apache.org/content/repositories/snapshots/commons-net/commons-net/3.0.1-SNAPSHOT/

+2
source

Apache FTP Client has some unresolved issues. Below are instructions on using Ftp4J to efficiently handle ftp programmatically, although java.

Download Ftp4J: http://www.sauronsoftware.it/projects/ftp4j/download.php

Then in your 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, IOException, FTPIllegalReplyException, FTPException, FTPDataTransferException, 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) } } 
+3
source

All Articles