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élecharger une image depuis la camera et l'envoyer au serveur php avec retrofit sous android


Sujet :

API standards et tierces Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Télecharger une image depuis la camera et l'envoyer au serveur php avec retrofit sous android
    Bonjour la communauté!
    je demande une aide:
    Je développe une application sous android qui se connecte à un serveur(php) distant.Pour cela j'utilise Retrofit mais je me suis bloqué quand je veux envoyer une image
    dont le type est byte dans ma classe POJO au serveur!
    Merci!

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Qu'est ce que tu as essayé qu'est ce qui ne marche pas ?

    Ton image est un tableau de byte mais c'est bien un jpeg et pas une image au format brute ? Sinon l'envoi va être très très long

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Télecharger une image depuis la camera et l'envoyer au serveur php avec retrofit sous android
    Citation Envoyé par grunk Voir le message
    Qu'est ce que tu as essayé qu'est ce qui ne marche pas ?

    Ton image est un tableau de byte mais c'est bien un jpeg et pas une image au format brute ? Sinon l'envoi va être très très long
    Bonjour Grunk!
    C'est en png convertie en tableau de byte!
    Voici un bout de 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
    join.setOnClickListener(new View.OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    //				cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(file));
    				startActivityForResult(cameraIntent, CAMERA_REQUEST);
    			}
    		});
    		send.setOnClickListener(new View.OnClickListener() {
    			@Override
    			public void onClick(View v) {
    					cod = code.getText().toString().trim();
    					li = lieu.getText().toString().trim();
    					nbr = nb.getText().toString().trim();
    					nombre = Integer.parseInt(nbr);
    					Log.d("cod", cod);
    					Log.d("li", li);
    					Log.d("nombre", "" + nombre);
    					ByteArrayOutputStream baos = new ByteArrayOutputStream();
    					photo.compress(Bitmap.CompressFormat.PNG, 100, baos);
    					Log.d("baos", "onClick: " + baos);
    					Log.d("bitmap", "onClick: " + Bitmap.CompressFormat.PNG);
    					byte[] b = baos.toByteArray();
    					Log.d("cod", "" + b);
    					String ts = null;
    					ts = Base64.encodeToString(b, Base64.DEFAULT);
    					Materiel materiel = new Materiel(categorie, li, new Date(), cod, ClientActivity.id, b, clic, nombre, null, 0);
    					materialViewmodel.insert(materiel);
    					materialViewmodel.insertM(categorie, li, new Date(), cod, ClientActivity.id, b, clic, nombre);
    					Toast.makeText(SaveMaterial.this, "Votre signalement a été bien envoyé!\n Merci de votre participation à la gestion du patrimoine mobilier", Toast.LENGTH_LONG).show();
    					vide();
     
    			}
    		});
    	}
     
    	@Override
    	protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    		if (requestCode == CAMERA_REQUEST&&resultCode==RESULT_OK) {
    			photo = (Bitmap) data.getExtras().get("data");
    			Log.d("data", "onActivityResult: "+photo);
    			Log.d("data", "onActivityResult: "+data.getAction());
    			image.setImageBitmap(photo);
     
    		}
    		else
    			{
    				Toast.makeText(this, "Aucune photo prise", Toast.LENGTH_SHORT).show();
    			}
    	}
    la methode qui fait appel au serveur:
    public void insertM(String category, String lieu, Date date, String code, int user_fk, byte[] image, String message,  int nbr)
    	{
    		final MaterialService materialService= Webprovide.getClient().create(MaterialService.class);
    		Materiel material1=new Materiel(category,lieu,date,code,user_fk,image,message,nbr);
    		Log.d(TAG, "insertM: "+image.length);
    		Log.d(TAG, "insertM: "+image.clone());
    		File file = null;
    		file = new File(String.valueOf(file));
    		RequestBody requestb=RequestBody.create(MediaType.get("multipart/data"),file);
    		MultipartBody.Part request=MultipartBody.Part.createFormData("image",file.getName(),requestb);
    		material1.setCategory(category);
    		material1.setLieu(lieu);
    		material1.setDate(date);
    		material1.setCode(code);
    		material1.setUser_fk(user_fk);
    		material1.setImage(image);
    		material1.setNombre(nbr);
    		Log.d(TAG, "insertM: "+requestb.contentType());
    		Log.d(TAG, "insertM: "+request.body());
    		Call<ResponseBody> callm=materialService.createMaterial(material1.getCategory(),material1.getLieu(),material1.getDate(),material1.getCode(),
    				material1.getUser_fk(),request,material1.getMessage(),material1.getNombre());
    		Log.d(TAG, "insertM: "+callm.request());
    		callm.enqueue(new Callback<ResponseBody>() {
    			@Override
    			public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
    				Log.d(TAG , "insertS: "+call);
    				Log.d(TAG, "onResponse: "+response.body());
    				//response.body();
    				if(response.code()==200)
    				{
    					Log.d(TAG, "onResponse: ok");
    				}
    			}
     
    			@Override
    			public void onFailure(Call<ResponseBody> call, Throwable t) {
    				Log.d(TAG, "onFailure: "+call.request());
    				Log.d(TAG , "onFailure: "+t.getLocalizedMessage() );
    				Log.d("getmessage", "onFailure: "+t.getMessage());
    				Log.d("Userservieces", "onFailure: "+materialService.toString());
    				Log.d("on", "onFailure: ");
    			}
    		});
     
    	}
    mon endpoint:
    @Multipart
    	@POST("insertionM.php")
    	Call<ResponseBody> createMaterial(@Part("category") String category, @Part("lieu") String lieu,
    									  @Part("date_sent") Date date, @Part("code")String code,
    									  @Part("user_fk") int user_fk, @Part MultipartBody.Part image,
    									  @Part("message") String message, @Part("nombre") int nbr);

Discussions similaires

  1. [Image] Afficher une image depuis serveur distant
    Par grinder59 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/05/2006, 09h45
  2. Charger une image depuis un textfield [noob]
    Par yodark dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/04/2006, 08h36
  3. [C#] Récupération d'une image depuis une table SQL Server
    Par borgfabr dans le forum Accès aux données
    Réponses: 10
    Dernier message: 08/04/2004, 13h20

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