2017-07-25 1 views
0

Ok, avant de commencer à dire que c'est un doublon et ainsi de suite ... J'ai essayé tous les moyens que j'ai trouvés sur le relâchement/documentations et ça ne m'a pas aidé du tout ... et Je ne peux pas comprendre ce que le problème estokhttp request/multipart image

donc, ce sont 2 dernières façons j'ai essayé de faire la demande

final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); 
    //RequestBody reqFile = RequestBody.create(MediaType.parse("multipart/form-data"), loadImageFile); 
    //MultipartBody.Part filePart = MultipartBody.Part.createFormData("picture", loadImageFile.getName(), reqFile); 
    //RequestBody filename = 
    RequestBody.create(MediaType.parse("text/plain"),loadImageFile.getName()); 
    RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), 
    loadImageFile); 
    MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", 
    loadImageFile.getName(), requestBody); 

les parties est un moyen de commentaires, et les autres lignes est la façon dont je Je le fais maintenant ..

Ici, j'ai l'interface

@Multipart 
@POST(RestClient.API_REGISTER_URL) 
Call<ResponseBody> register(@Query("name") String name, @Query("email") String email, 
@Query("password") String password, @Query("location") String location, 
          @Query("latitude") double latitude, @Query("longitude") double longitude, 
          @Query("gender") String gender, @Part MultipartBody.Part picture, 
          @Part("picture") RequestBody file, 
          @Query("device_uuid") String device_uuid, @Query("device_os") String device_os, 
          @Query("push_token") String push_token, @Query("api_key") String user); 

Pour être honnête, je ne peux tout simplement pas comprendre pourquoi il n'est pas working..the corps de réponse du serveur est « L'image doit être une image » qui me fait penser que de toute façon il ne reconnaître le fichier que j'envoie

Toute aide serait appréciée, merci.

EDIT J'ai changé un peu le code lil, une autre façon je tentais de le faire, et encore quelque chose ne vous satisfait pas à cette demande ...

RequestBody req = new MultipartBody.Builder().setType(MultipartBody.FORM) 
      .addFormDataPart("picture", loadImageFile.getName(), RequestBody.create(MultipartBody.FORM, loadImageFile)) 
      .build(); 

MultipartBody.Part part = MultipartBody.Part.createFormData("picture", loadImageFile.getName(), req); 

Répondre

0

J'utilise ce code envoyer l'image au serveur avec okhttp

 final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); 

     RequestBody req = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("branchCode", branchCode) 
       .addFormDataPart("upload", "profile.png", RequestBody.create(MEDIA_TYPE_PNG, file)).build(); 

     Request request = new Request.Builder() 
       .url(URLs.UPLOAD_FILE) 
       .post(req) 
       .build(); 

Un problème est peut-être survenu sur votre serveur?

+0

Il ne peut pas être sur le côté serveur, sur iOS cela fonctionne. Donc ça devrait être côté client Qu'est-ce que branchCode var? –

+0

En outre, votre image se trouve sur l'appareil? –

+0

Juste le nom du paramètre pour le côté serveur. Et le fichier que vous voulez télécharger – FnR