IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Android - FTP File to ImageView


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 15
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    ftpClient.completePendingCommand();

    Voici ma fonction principale (celle qui doit récupérer le fichier sur le serveur FTP et me rendre un InputStream :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Bonjour,
    Citation Envoyé par Corailla20 Voir le message
    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.
    Je peux te recommander la library PICASSO. Très utile pour le téléchargement des images depuis des URL et affichage dans des ImageView. Tu vas gagner beaucoup de temps de développement.

    Si tu as des questions n'hésite pas

    Christian Djo
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 15
    Par défaut
    Merci MasterMbg,

    J'avais déjà essayé avec la bibliothèque Picasso, et en effet elle est super efficace, mais je n'ai pas réussi à la faire marcher avec un lien FTP (vu qu'il faut s'identifier).

    En tout cas j'ai réussi à faire marcher mon code aujourd'hui !

    Voila le code après correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    35
    36
    37
    38
    39
    40
    41
    public static InputStream LoadImageFromWebOperations(final String url) {
     
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    FTPClient ftpClient = new FTPClient();
                    try {
                        ftpClient.connect("ftp.xxx.com");
                        ftpClient.login("login", "password");
                        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
                        inStream = ftpClient.retrieveFileStream(url);
                        ftpClient.disconnect();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            thread.start();
     
            while (thread.isAlive()){
     
            }
     
            return inStream;
        }
     
        public static Bitmap DownloadImage(String URL) throws IOException {
            Bitmap bitmap = null;
            InputStream in = null;
            in = LoadImageFromWebOperations(URL);
            bitmap = BitmapFactory.decodeStream(in);
            if(!(inStream == null)) {
                try {
                    inStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return bitmap;
        }
    }
    Il suffit après de faire ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     photo.setImageBitmap(DownloadImage(url));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment compiler un binary file sans le code source (android)
    Par sup.wado dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 21/04/2011, 19h36
  2. Download the Android SDK corrupt zip file
    Par zeavan dans le forum Android
    Réponses: 9
    Dernier message: 06/04/2010, 08h45
  3. se connecter à un serveur ftp via un batch file
    Par younek dans le forum Windows
    Réponses: 7
    Dernier message: 05/11/2008, 11h55
  4. [FTP] not a plain file
    Par Nico_stras dans le forum Réseau
    Réponses: 3
    Dernier message: 07/09/2008, 21h10
  5. [JSP/Websphere] File write / FTP / File read
    Par benben13 dans le forum Websphere
    Réponses: 34
    Dernier message: 18/08/2005, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo