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

API standards et tierces Android Discussion :

télécharger une image au serveur


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut télécharger une image au serveur
    bonsoir,

    je suis débutante en programmation android et j'en sais pas comment envoyer une image sélectionnée d’après la "gallory" du téléphone vers un serveur qui a un service web ou bien websockets .
    merci de m'aider avec des idées et des tutoriels explicatifs.

  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
    Salut,

    Le forum est 100% en français. Prière d'écrire le titre en français pour que tout le monde s'intéresse à ton sujet.

    Pour ton problème, Je te propose d'envoyer ton fichier directement par ftp.

    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 éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    j'ai essayé de faire cette application, mais j'ai un problème que j'arrive pas a résoudre , lorsque je clique sur upload image automatique il existe un erreur dans le terminale du android sudio qui s'affiche " E/Request: ERROR - Invalid response code from server 500 " (aucune réponse entre serveur et application)

    code:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    public class MainActivity extends Activity {
        //define global views variable
        public ImageView imageView;
        public Button   selectImage,
                        uploadImage;
     
     
        public String SERVER = "http://x.x.x.x:8090/up",
                        timestamp;
     
        private static final String TAG = MainActivity.class.getSimpleName();
     
        private static final int RESULT_SELECT_IMAGE = 1;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            //instantiate view
            imageView = (ImageView) findViewById(R.id.imageView);
            selectImage = (Button) findViewById(R.id.selectImage);
            uploadImage = (Button) findViewById(R.id.uploadImage);
     
            //when selectImage button is pressed
            selectImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //call the function to select image from album
                    selectImage();
                }
            });
     
            //when uploadImage button is pressed
            uploadImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //get image in bitmap format
                    Bitmap image = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
                    //execute the async task and upload the image to server
                    new Upload(image,"IMG_"+timestamp).execute();
                }
            });
     
        }
     
        //function to select a image
        private void selectImage(){
            //open album to select image
            Intent gallaryIntent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(gallaryIntent, RESULT_SELECT_IMAGE);
        }
     
        /*
        * This function is called when we pick some image from the album
        * */
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
     
            if (requestCode == RESULT_SELECT_IMAGE && resultCode == RESULT_OK && data != null){
                //set the selected image to image variable
                Uri image = data.getData();
                imageView.setImageURI(image);
     
                //get the current timeStamp and strore that in the time Variable
                Long tsLong = System.currentTimeMillis() / 1000;
                timestamp = tsLong.toString();
     
                Toast.makeText(getApplicationContext(),timestamp,Toast.LENGTH_SHORT).show();
            }
        }
     
        private String hashMapToUrl(HashMap<String, String> params) throws UnsupportedEncodingException {
            StringBuilder result = new StringBuilder();
            boolean first = true;
            for(Map.Entry<String, String> entry : params.entrySet()){
                if (first)
                    first = false;
                else
                    result.append("&");
     
                result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
                result.append("=");
                result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
            }
     
            return result.toString();
        }
     
     
        //async task to upload image
        private class Upload extends AsyncTask<Void,Void,String>{
            private Bitmap image;
            private String name;
     
            public Upload(Bitmap image,String name){
                this.image = image;
                this.name = name;
            }
     
            @Override
            protected String doInBackground(Void... params) {
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                //compress the image to jpg format
                image.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
                /*
                * encode image to base64 so that it can be picked by saveImage.php file
                * */
                String encodeImage = Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);
     
                //generate hashMap to store encodedImage and the name
                HashMap<String,String> detail = new HashMap<>();
                detail.put("name", name);
                detail.put("image", encodeImage);
     
                try{
                    //convert this HashMap to encodedUrl to send to php file
                    String dataToSend = hashMapToUrl(detail);
                    //make a Http request and send data to saveImage.php file
                    String response = Request.post(SERVER,dataToSend);
     
                    //return the response
                    return response;
     
                }catch (Exception e){
                    e.printStackTrace();
                    Log.e(TAG,"ERROR  "+e);
                    return null;
                }
            }
     
     
     
            @Override
            protected void onPostExecute(String s) {
                //show image uploaded
                Toast.makeText(getApplicationContext(),"Image Uploaded",Toast.LENGTH_SHORT).show();
            }
        }
    }
    -> class request:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    public class Request {
     
        private static final String TAG = Request.class.getSimpleName();
     
        public static String post(String serverUrl,String dataToSend){
            try {
                URL url = new URL(serverUrl);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                //set timeout of 30 seconds
                con.setConnectTimeout(1000 * 30);
                con.setReadTimeout(1000 * 30);
                //method
                con.setRequestMethod("POST");
                con.setDoOutput(true);
     
                OutputStream os = con.getOutputStream();
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os,"UTF-8"));
     
                //make request
                writer.write(dataToSend);
                writer.flush();
                writer.close();
                os.close();
     
                //get the response
                int responseCode = con.getResponseCode();
     
                if(responseCode == HttpURLConnection.HTTP_OK){
                    //read the response
                    StringBuilder sb = new StringBuilder();
     
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(con.getInputStream()));
                    String line;
     
                    //loop through the response from the server
                    while ((line = reader.readLine()) != null){
                        sb.append(line).append("\n");
                    }
     
                    //return the response
                    return sb.toString();
                }else{
                    Log.e(TAG,"ERROR - Invalid response code from server "+ responseCode);
                    return null;
                }
     
            } catch (IOException e) {
                e.printStackTrace();
                Log.e(TAG,"ERROR "+e);
                return null;
            }
        }
    }
    l'erreur au sein du serveur "TypeError: Cannot read property 'image' of undefined"
    code coté serveur:
    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
     
     
    app.post('/up', function(req, res) {
    	 //var image = req.body.photo.name || img.name;
        console.log(req.files.image.originalFilename);
        console.log(req.files.image.path);
            fs.readFile(req.files.image.path, function (err, data){
            var dirname = "/home/syrine01/file_upload";
            var newPath = dirname + "/uploads/" +req.files.image.originalFilename;
     
            fs.writeFile(newPath, data, function (err) {
            if(err){
            res.json({'response':"Error"}); 
            }else {
            res.json({'response':"Saved"});
    }
    });
    });
    });
    Merci

  4. #4
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Ton serveur tourne avec Node.js ?
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Ton serveur tourne avec Node.js ?
    oui, il est runtime sous node.JS

  6. #6
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Bah visiblement il est pas accessible ou carrément plante (erreur 500°). Avant de t'occuper de la partie Android, vérifie que tout fonctionne bien sur le serveur à l'aide d'une simple commande telnet par exemple : telnet http://monserveur.com:8090/test/
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

Discussions similaires

  1. [ionic] Upload image vers un server
    Par totofe dans le forum Mobiles
    Réponses: 1
    Dernier message: 10/05/2016, 18h13
  2. upload image et le stockage dans SQL server
    Par clubist dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/05/2010, 11h26
  3. [Upload] Script upload images
    Par Myriamrv dans le forum Langage
    Réponses: 14
    Dernier message: 07/12/2005, 18h24
  4. Réponses: 1
    Dernier message: 31/10/2005, 09h33
  5. [Upload] Probleme upload images
    Par yveslens dans le forum Langage
    Réponses: 6
    Dernier message: 22/08/2005, 09h42

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