问题
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();
}
来源:https://stackoverflow.com/questions/17934143/apache-ftp-server-integration-with-android