FTPClient在上传到Android上的ftp服务器时损坏了图像?

问题描述

| 我正在尝试将图像从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/     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...