Android - FTP File to ImageView
Bonjour,
Je travaille actuellement sur une application Android. Cette application regroupera des annonces, elle récupère donc des informations depuis une BDD Oracle. Elle doit aussi afficher les photos en relations avec les annonces, c'est là où j'ai besoin de vous.
Récupérant toutes les infos d'abord d'un autre site depuis un serveur FTP, je me suis dit qu'il était surement plus logique de me servir directement des images du serveur FTP et non pas celles téléchargées sur le serveur de mon entreprise.
J'ai donc essayé de récupérer une photo avec "FTPClient" et "retrieveFileStream", cependant, je n'ai pas encore réussi à afficher l'image récupérée dans mon ImageView. :(
Je ne sais pas si c'est l'image qui n'est jamais récupérée, ou la transformation de l'InputStream vers une Bitmap (avec BitmapFactory.decodeStream(input)).
Voici le message que j'ai en tout cas :
Code:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.BufferedReader.readLine()' on a null object reference
Cette erreur survient sur cette ligne :
Code:
ftpClient.completePendingCommand();
Voici ma fonction principale (celle qui doit récupérer le fichier sur le serveur FTP et me rendre un InputStream :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public InputStream LoadImageFromWebOperations(final String url) {
final Context context = getActivity();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
FTPClient ftpClient = new FTPClient();
XmlPullParser xpp = null;
try {
xpp = XmlPullParserFactory.newInstance().newPullParser();
ftpClient.connect("ftp.xxx.com");
ftpClient.login("login", "password");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
inStream = ftpClient.retrieveFileStream(url);
xpp.setInput(inStream, "UTF-8");
ftpClient.disconnect();
ftpClient.completePendingCommand();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
while (thread.isAlive()){
}
return inStream;
} |
Je me suis inspirée de chose que j'ai trouvée sur internet pour ce code et de mon propre "FTPDownloader" Java qui permettait de récupérer tout sur une machine.
Merci ! :D