Apache Ftp server integration with Android

2019-04-15 19:46发布

问题:

I am working on integrating Apache FTP server to my Android app.
Follow the instructions here ( Embedding FtpServer in 5 minutes): http://mina.apache.org/ftpserver-project/embedding_ftpserver.html.

However, with all the codes included and the jar files imported to my android project, I got two major errors: 1. App crash upon ftp server start claiming class not found 2. Dalvik error 1

Tried every method by researching all related problems and the solution is to keep the minimal subset of the jar files that are listed in the (Embedding FtpServer in 5 minutes) instruction and make the code compile. Since there are not many jar files so I just did some try and error to get my minimal subset.

After that I use some new code to start the ftp server(here is the link): writing a java ftp server

However I couldn't connect because it says missing user.properties file. I download ftpserver-1.0.6-src source code and put the user.properties file into my android sdcard to make the ftp start. I put the user.properties file in the assets folder first, then copy it to the sdcard by using some code.

Now everything seems to work. However, I am not able to use anonymous login as my user name and password is set using: BaseUser user = new BaseUser(); user.setName("test"); user.setPassword("test");

If I don't set it, the code won't compile.
Log in as anonymous user is the last part I have to do. Another trivial thing is when I ftp to my android server, it won't allow me to download the files as it returns no permission error.

Any suggestions are welcome. Thank you

回答1:

I've have had the same problem, so I've created my custom new users.properties file. Here it is the code:

    File files=new File(filepath + "/users.properties");  
    if (!files.exists()) {
          try {
              files.createNewFile();
          } catch (IOException e) {
             Log.e(TAG, "Errore nella creazione del file di log", e);
              e.printStackTrace();
          }
    }
    userManagerFactory.setFile(files);  
    userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor());
    UserManager um = userManagerFactory.createUserManager();
    BaseUser user = new BaseUser();
    user.setName("xxx");
    user.setPassword("yyy");
    user.setHomeDirectory("/mnt/sdcard");

    List<Authority> auths = new ArrayList<Authority>();
    Authority auth = new WritePermission();
    auths.add(auth);
    user.setAuthorities(auths);

    try {
        um.save(user);
    } catch (FtpException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }