简体   繁体   中英

FTP Upload and Download on Android

I get this error after i have set INTERNET_ACCESS and etc...

 private class AsyncUpload extends AsyncTask<String, Void, Void>{       
    public void ftpUpload(){
        FTPClient con = new FTPClient();
        try
        {

            con.connect("ftp.194.90.81.149"); //here i recieve exception
                //the exception is java.unknownhostexception
                //java.net.UnknownHostException: Unable to resolve host "ftp.194.90.81.149": No address associated with hostname
            if (con.login("username", "password"))
            {
                con.enterLocalPassiveMode(); 
                String data = "test data";
                ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());
                boolean result = con.storeFile("/test.jpg", in);
                in.close();
                if (result) Log.v("upload result", "succeeded");
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }


        try
        {
            con.logout();
            con.disconnect();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    @Override
    protected Void doInBackground(String... params) {
        ftpUpload();
        return null;
    }
}

here is another part of code i have tested and still receive that exception

public class FTPFactory {
private FTPClient _ftpClient = null;

public boolean Connect(String host, String userName, String password, int port) throws IOException
{
    try {

        _ftpClient = new FTPClient();   

        // connecting to the host           
        _ftpClient.connect(host, port);

        // now check the reply code, if positive mean connection success
        if (FTPReply.isPositiveCompletion(_ftpClient.getReplyCode())) {             
            // login using username & password
            boolean status = _ftpClient.login(userName, password);
            return status;
        }

    } catch(IOException e) {
        throw e;
    }       
    return false;
}

public boolean Disconnect()
{
    try {
        _ftpClient.logout();
        _ftpClient.disconnect();
        return true;
    } catch (Exception e) {

    }

    return false;
}

public boolean ChangeDirectory(String directoryPath)
{
    try {
        _ftpClient.changeWorkingDirectory(directoryPath);
    } catch(Exception e) {

    }

    return false;
}


public String GetCurrentWorkingDirectory()
{
    try {
        String workingDir = _ftpClient.printWorkingDirectory();
        return workingDir;
    } catch(Exception e) {

    }

    return null;
}

public void PrintFilesList(String dirPath)
{
    try {
        FTPFile[] ftpFiles = _ftpClient.listFiles(dirPath);
        int length = ftpFiles.length;

        for (int i = 0; i < length; i++) {
            String name = ftpFiles[i].getName();
            boolean isFile = ftpFiles[i].isFile();

            if (isFile) {

            }
            else {

            }
        }
    } catch(Exception e) {
        e.printStackTrace();
    }
}

public boolean MakeDirectory(String newDirPath)
{
    try {
        boolean status = _ftpClient.makeDirectory(newDirPath);
        return status;
    } catch(Exception e) {

    }
    return false;
}


public boolean RemoveDirectory(String dirPath)
{
    try {
        boolean status = _ftpClient.removeDirectory(dirPath);
        return status;
    } catch(Exception e) {

    }
    return false;
}

public boolean RemoveFile(String filePath)
{
    try {
        boolean status = _ftpClient.deleteFile(filePath);
        return status;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

public boolean RenameFile(String from, String to)
{
    try {
        boolean status = _ftpClient.rename(from, to);
        return status;
    } catch (Exception e) {

    }
    return false;
}


/**
 * mFTPClient: FTP client connection object (see FTP connection example)
 * srcFilePath: path to the source file in FTP server
 * desFilePath: path to the destination file to be saved in sdcard
 */
public boolean Download(String srcFilePath, String desFilePath)
{
    boolean status = false;
    try {
        FileOutputStream desFileStream = new FileOutputStream(desFilePath);;
        status = _ftpClient.retrieveFile(srcFilePath, desFileStream);
        desFileStream.close();

        return status;
    } catch (Exception e) {

    }

    return status;
}

/**
 * mFTPClient: FTP client connection object (see FTP connection example)
 * srcFilePath: source file path in sdcard
 * desFileName: file name to be stored in FTP server
 * desDirectory: directory path where the file should be upload to
 */
public boolean Upload(String srcFilePath, String desFileName, String desDirectory)
{
    boolean status = false;
    try {
        FileInputStream srcFileStream = new FileInputStream(srcFilePath);

        // change working directory to the destination directory
        if (ChangeDirectory(desDirectory)) {
            status = _ftpClient.storeFile(desFileName, srcFileStream);
        }

        srcFileStream.close();
        return status;
    } catch (Exception e) {

    }

    return status;
}    

}

 con.connect("ftp.194.90.81.149"); //here i recieve exception //the exception is java.unknownhostexception //java.net.UnknownHostException: Unable to resolve host "ftp.194.90.81.149": No address associated with hostname

The fact that you're receiving an UnknownHostException means that ftp.194.90.81.149 isn't a real hostname in DNS. I'd suspect that the numeric part of that is what you really want. Ie, try changing that line to

con.connect("194.90.81.149");

Unknown host exception means either you are missing internet permission or you are not connected to internet Or may be your ftp url is wrong.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM