FTPClient повреждает изображения при загрузке на FTP-сервер на Android? - PullRequest
7 голосов
/ 01 июня 2011

Я пытаюсь загрузить изображения на FTP-сервер (на моем локальном ПК) с телефона Android (HTC Desire HD).Изображения идут на 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();
    }

Ответы [ 2 ]

3 голосов
/ 18 апреля 2013

У клиента Apache FTP есть несколько нерешенных проблем с этим.Ниже приведены инструкции по использованию Ftp4J для эффективной обработки ftp программно через Java.

Загрузка 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, 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)
    }

}
2 голосов
/ 01 июня 2011

Проблема решена.Класс 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/

...