skip to Main Content

am using retrofit for insert data to my webservice, I have made it before but without uploading the image and the insert is successful, the input field through the model class not in interface,how I add an input field fot uploading files through the model so that it can be sent to my web services storage folder?

I have tried but failed please help

for my insert in activity

btnsubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String tanggal = textdate.getText().toString();
                SimpleDateFormat formatter1=new SimpleDateFormat("dd/MM/yyyy");
                Date date1= null;
                try {
                    date1 = formatter1.parse(tanggal);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                SwabtestModel sw = new SwabtestModel();
                sw.sethasil(texthasil.getText().toString());
                sw.settanggal(date1);
                sw.settempat(texttempat.getText().toString());
                sw.setuserid(Integer.valueOf(txtuserid.getText().toString()));
                sw.setFile_name(new File(txturi.getText().toString()));
                save(sw);
            }
        });
public void save(SwabtestModel sw){
        Call<SwabtestModel> call = swabtestService.addswab(sw);
        call.enqueue(new Callback<SwabtestModel>() {
            @Override
            public void onResponse(Call<SwabtestModel> call, Response<SwabtestModel> response) {
                if(response.isSuccessful()){
                    String status = response.body().getStatus();
                    Toast.makeText(SwabtestActivity.this, status, Toast.LENGTH_LONG).show();                }
            }

            @Override
            public void onFailure(Call<SwabtestModel> call, Throwable t) {
                Log.e("ERROR: ", t.getMessage());
            }
        });
    }

for my file chooser

public void onActivityResult(int request_code, int result_code, Intent data){
        super.onActivityResult(request_code,result_code,data);

        if(request_code==request_code && result_code== Activity.RESULT_OK){

            if(data==null){
                return;
            }
            uri= data.getData();
            filePath = uri.getPath();
            txturi.setText(filePath);
        }
    }
    public void openfilechooser(){
        Intent intent= new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("*/*");
        startActivityForResult(intent,request_code);
    }

for my model class

public class SwabtestModel {

    @SerializedName("hasil")
    @Expose
    private String hasil;

    @SerializedName("tanggal")
    @Expose
    private Date tanggal;

    @SerializedName("tempat")
    @Expose
    private String tempat;

    @SerializedName("file_name")
    @Expose
    private File file_name;

    @SerializedName("user_id")
    @Expose
    private Integer user_id;


    String data;
    String status;

    public SwabtestModel(String hasil, Date tanggal, String tempat){

        this.hasil = hasil;
        this.tanggal = tanggal;
        this.tempat = tempat;
    }

    public void sethasil(String hasil) {
        this.hasil = hasil;
    }
    public String gethasil(){
        return hasil;
    }
    public void settanggal(Date tanggal) {
        this.tanggal = tanggal;
    }
    public Date gettanggal(){
        return tanggal;
    }
    public void settempat(String tempat) {
        this.tempat = tempat;
    }
    public String gettempat(){
        return tempat;
    }

    public void setuserid(Integer user_id) {
        this.user_id = user_id;
    }
    public Integer getuserid(){
        return user_id;
    }

    public void setFile_name( File file_name) {
        this.file_name =file_name ;
    }
    public File getfilename(){
        return file_name;
    }

    public String getData() {
        return data;
    }

    public String getStatus() {
        return status;
    }

}

my interface

public interface swabtestService
{
    @GET("hasil-antigen-list")
    Call<List<SwabtestModel>> getUsers();

    @POST("insert-hantigen")
    Call<SwabtestModel> addswab(@Body SwabtestModel swabtest);
}

2

Answers


  1. To upload files you should use Multipart, Please refer to this post for example and please ping me if you have any queries https://stackoverflow.com/a/39953566

    Login or Signup to reply.
  2. Take a data in list like @Part List<MultipartBody.Part> partFile

    private List<MultipartBody.Part> getMapPartListSave(List<PojoAttachDocList> fields) {
            List<MultipartBody.Part> mapPart = new ArrayList<>();
            for (int i = 0; i < fields.size(); i++) {
                **PojoAttachDocList** attachDoc = fields.get(i);
                if (!attachDoc.isAttached() && attachDoc.getDocFile() != null && attachDoc.getDocFile().exists()
                        && attachDoc.getDocFile().length() > 0) {
                    String fileParam = PARAMS_DOCUMENT + "[" + i + "]";
                    mapPart.add(MultipartBody.Part.createFormData(fileParam, attachDoc.getDocFile().getName(),
                            RequestBody.create(MediaType.parse("*/*"), attachDoc.getDocFile())));
                }
            }
            return mapPart;
        }
    

    Convert it to MultipartBody

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search