07/09/2018, 15:58

Upload a File using Retrofit

Có rất nhiều docs hướng dẫn nhưng mình thấy upload như này hiệu quả nhất nên note lại Mình sẽ đi vào ví dụ luôn cho nhanh public interface ApiInterface { @Multipart @POST ("/api/Accounts/editaccount") Call<User> editUser (@Header("Authorization") String ...

Có rất nhiều docs hướng dẫn nhưng mình thấy upload như này hiệu quả nhất nên note lại
Mình sẽ đi vào ví dụ luôn cho nhanh

public interface ApiInterface {
        @Multipart
        @POST ("/api/Accounts/editaccount")
        Call<User> editUser (@Header("Authorization") String authorization, @Part("file"; filename="pp.png" ") RequestBody file , @Part("FirstName") RequestBody fname, @Part("Id") RequestBody id);
    }

Ở đoạn code trên chú ý đến

@Part("file"; filename="pp.png" ") RequestBody file
ở đây 
"file"; =>file là param request lên

Tiếp đến là send request to server

File file = new File(imageUri.getPath());
RequestBody fbody = RequestBody.create(MediaType.parse("image/*"), file);
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), firstNameField.getText().toString());
RequestBody id = RequestBody.create(MediaType.parse("text/plain"), AZUtils.getUserId(this));
Call<User> call = client.editUser(AZUtils.getToken(this), fbody, name, id);
call.enqueue(new Callback<User>() {
     @Override
     public void onResponse(retrofit.Response<User> response, Retrofit retrofit) {

     }

   @Override
   public void onFailure(Throwable t) {
       t.printStackTrace();
   }
});

Bài sau mình sẽ hướng dẫn upload multiple file

0