Загрузить файл изображения с Retrofit в базу данных - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь загрузить изображение в свою базу данных с помощью Retrofit, но пока не получилось. Прочитав все темы, связанные с этим, и попробовав множество решений, я решил опубликовать свою проблему. Так что это мой код в Android

API

@Multipart
@POST("createevent")
Call<JsonResponse> createEvent(@Field("title") String title,
                               @Part MultipartBody.Part imageFile,
                               @Field("description") String description,
                               @Field("id_type") int id_type,
                               @Part("image") RequestBody image,
                               @Field("id_group[1]") int id_group,
                               @Header("Authorization")String authHeader);

REQUEST

public void CreateEvent(){

    keepAllDates();
    File file = new File("/storage/emulated/0/Download/carmena.jpg");
    RequestBody requestFile =
            RequestBody.create(MediaType.parse("multipart/form-data"), file);
    MultipartBody.Part body =
            MultipartBody.Part.createFormData("image", file.getName(), requestFile);
    RequestBody image =
            RequestBody.create(MediaType.parse("multipart/form-data"), "Your Name");


    Call<JsonResponse> peticion = api.createEvent (eventTile,body,eventDescription, idTypeEvent,image,id_group,tokenHc);
    peticion.enqueue(new Callback<JsonResponse>() {
        @Override
        public void onResponse(Call<JsonResponse> call, Response<JsonResponse> response) {

            int code = response.body().getCode();
            JsonResponse json = response.body();
            Log.d ( "Respuesta del servidor", response.body ().getMessage () );

            switch (code) {
                case 200:
                    String message = response.body ().getMessage ();

                    //listener.onGetEventsFinish ();

                    break;
                case 400:
                    // Toast.makeText ( MainActivity.this, errorMessage, Toast.LENGTH_SHORT ).show ();
                    String errorMessage = response.body ().getMessage ();
                    break;

                default:
                    //Toast.makeText ( MainActivity.this, errorMessage, Toast.LENGTH_SHORT ).show ();
                    String defaultmsg = response.body ().getMessage ();

            }

        }
        @Override
        public void onFailure(Call<JsonResponse> call, Throwable t) {

            Log.d ("Failure message", "fail");
            Log.d ("fail is", String.valueOf(t));

        }

    });
}

POSTMAN

Postman request with all fields

Я не могу заставить его работать, просто ничего не загружается.

1 Ответ

0 голосов
/ 12 марта 2019

Если вы хотите отправить изображение с запросом вместе с другими данными формы (как на прикрепленном изображении), самый простой способ сделать это с Retrofit 2.0 - передать его в PartMap. Эта ссылка содержит отличный учебник о том, как это сделать, в основном это просто объект Map с парами ключ-значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...