Rénovation Téléchargement de plusieurs images en une seule touche
Je suis en utilisant une Rénovation de télécharger des images sur mon serveur. Ici, j'ai besoin de télécharger des images multiples pour une seule clé. J'ai essayé avec Facteur client web il fonctionne bien. Voici une capture d'écran.
Voici les paires clé-valeur pour la demande.
SurveyImage : [fichier1,fichier2,fichier3];
PropertyImage : fichier
DRA : jsonBody
J'ai essayé de faire la même chose avec de Rénovation. mais les images ne sont pas les télécharger sur le serveur.Voici mon code.
WebServicesAPI.java
public interface WebServicesAPI {
@Multipart
@POST(WebServices.UPLOAD_SURVEY)
Call<UploadSurveyResponseModel> uploadSurvey(@Part MultipartBody.Part surveyImage, @Part MultipartBody.Part propertyImage, @Part("DRA") RequestBody dra);
}
Voici la méthode pour télécharger les fichiers.
private void requestUploadSurvey() {
File propertyImageFile = new File(surveyModel.getPropertyImagePath());
RequestBody propertyImage = RequestBody.create(MediaType.parse("image/*"), propertyImageFile);
MultipartBody.Part propertyImagePart = MultipartBody.Part.createFormData("PropertyImage", propertyImageFile.getName(), propertyImage);
JSONObject requestBody = getRequestBody();
RequestBody draBody = null;
try {
draBody = RequestBody.create(MediaType.parse("text/plain"), requestBody.toString(1));
Log.d(TAG, "requestUploadSurvey: RequestBody : " + requestBody.toString(1));
} catch (JSONException e) {
e.printStackTrace();
}
MultipartBody.Builder builder = new MultipartBody.Builder();
builder.setType(MultipartBody.FORM);
MultipartBody surveyImage = null;
for (SurveyModel.PictureModel model : surveyModel.getPicturesList()) {
File file = new File(model.getImagePath());
builder.addFormDataPart("SurveyImage", file.getName(),
RequestBody.create(MediaType.parse("image/*"), file));
}
surveyImage = builder.build();
final WebServicesAPI webServicesAPI = RetrofitManager.getInstance().getRetrofit().create(WebServicesAPI.class);
Call<UploadSurveyResponseModel> surveyResponse = null;
surveyResponse = webServicesAPI.uploadSurvey(MultipartBody.Part.createFormData("SurveyImage", "SurveyImage", surveyImage), propertyImagePart, draBody);
surveyResponse.enqueue(this);
Log.d(TAG, "requestUploadSurvey: sent the request");
}
Merci de m'aider avec cela.
publier vos SurveyModel sir
OriginalL'auteur Kartheek | 2016-10-05
Vous devez vous connecter pour publier un commentaire.
Nous pouvons utiliser
MultipartBody.Part
tableau de télécharger un tableau d'images à une seule touche.Voici la solution
WebServicesAPI
Voici la méthode pour télécharger les fichiers.
MultipartBody.Part []
, il est toujours télécharge uniquement la dernière image dans le tableau. pouvez-vous préciser exactement où êtes-vous à l'aide de la clé pour l'image de la matrice. Merci à l'avance.assurez-vous que vous êtes la création d'une seule référence à la matrice, et ajouter toutes les images dans ce tableau. Regarder dans uploadSurvey méthode dans WebServicesAPI de référence.
juste perdez plus de temps à ne pas travailler..
seulement télécharger des
first
imageMultipartBody.Part[] surveyImagesParts = new MultipartBody.Part[MySharedPreferences.all_sharedprefrenceaddimage.size()]; for (int i=0;i<MySharedPreferences.all_sharedprefrenceaddimage.size();i++){ File file = new File(MySharedPreferences.all_sharedprefrenceaddimage.get(i)); RequestBody surveyBody = RequestBody.create(MediaType.parse("image"), file); surveyImagesParts[i] = MultipartBody.Part.createFormData("photos[]", file.getName(), surveyBody); }
ajout de [] à la fin de la chaîne en premier paramètre de createFormData résout le problème de seulement 1 image téléchargée
surveyImagesParts.add(MultipartBody.Part.createFormData("images[]", file.getName(), surveyBody));
OriginalL'auteur Kartheek
J'ai perdu beaucoup de temps à accepté ans. mais cela ne fonctionne pas dans mon cas.
Après beaucoup de recherche j'ai trouvé celui-ci. Et son travail de 100% dans mon cas.
et c'est l'interface
essayez à nouveau.. ça va être bien... @Ali_Waris je reçois aussi parfois cette erreur, mais plus tard, son amende.
De son une exception, s'écraser à ma demande. J'ai besoin de l'éviter.
avez-vous obtenir le succès, en essayant d'éviter cette erreur? J'obtiens la même erreur. – Taynã Bonaldo 7 secondes auparavant modifier
J'ai résolu cette erreur en passant "requestBody.pièces()" à la méthode, au lieu requestBody objet. Puis dans la Rénovation de l'API de l'interface-je changer "@Corps RequestBody fichier" "@Partie de la Liste<MultipartBody.La partie> fichier". J'espère que ça aide.
OriginalL'auteur Imran Samed
Meilleure solution, j'ai essayé
ApiInterface:
Activité:
OriginalL'auteur Shofiullah Babor
Le premier paramètre @méthode
createFormData
de classeMultipartBody.Part
est une chaîne de caractères, qui est la " clé " ou le nom de l'entrée, vous pouvez passer à la chaîneimages[]
comme un tableau, et plus tard, vous pouvez le manipuler avec votre backend de la langue et de la boucle au-dessus pour obtenir toutes les images à la position (i)vérifier exemple
OriginalL'auteur Mohamed abdalmoniem