如何上传经过翻新和带有令牌的多部分文件?

时间:2020-06-01 19:51:49

标签: android-studio

enter image description here

我正在尝试通过认证令牌进行翻新和多部分上传,但是在运行时,我选择要上传的图像,它不会显示任何错误或在调试时显示。 请支持我的人,我真的很感激。

界面

    @Multipart
    @POST("api/acta_entrega_evidencia")
    Call<RespuestaEvidenciaImagenDTO> subirImagen
            (@Part("acta_entrega_id") RequestBody idActa,
             @Part MultipartBody.Part file_content_type,
             @Part("Authorization") RequestBody TOKEN);

活动


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 100 && resultCode == RESULT_OK && data != null) {
            //the image URI
            Uri selectedImage = data.getData();
            //llamando al método de carga de archivos después de elegir el archivo
            uploadFile("acta_entrega_id",selectedImage ,"TOKEN");


        }
    }

    private void uploadFile(String id, Uri fileUri, String token) {

        //creating a file
        File file = new File(getRealPathFromURI(fileUri));

        //creating request body for file
        RequestBody requestFile = RequestBody.create(MediaType.parse(getContentResolver().getType(fileUri)), file);
        RequestBody idBody = RequestBody.create(MediaType.parse("acta_entrega_id"), id);
        RequestBody toke = RequestBody.create(MediaType.parse( PreferenciaUsuario.TOKEN ), token );

        MultipartBody.Part filee = MultipartBody.Part.createFormData( "file_content_type", file.getName(), requestFile );

        //The gson builder
        Gson gson = new GsonBuilder()
                .setLenient()
                .create();


        //creating retrofit object
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ActasInterface.BASE_URL)
                .addConverterFactory( GsonConverterFactory.create( gson))
                .build();

        //creating our api
        ActasInterface api = retrofit.create(ActasInterface.class);

        //crear una llamada y llamar al método de cargar imagen
        Call<RespuestaEvidenciaImagenDTO> call = api.subirImagen( idBody, filee, toke );

        //finalmente realizando la llamada
        call.enqueue(new Callback<RespuestaEvidenciaImagenDTO>() {
            @Override
            public void onResponse(Call<RespuestaEvidenciaImagenDTO> call, Response<RespuestaEvidenciaImagenDTO> response) {
                RespuestaEvidenciaImagenDTO serverResponse = response.body();
                if (serverResponse != null) {
                    if (serverResponse.equals( serverResponse )) {
                        Toast.makeText(getApplicationContext(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(getApplicationContext(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                } else {
                    assert serverResponse != null;
                    Log.v( "Response", serverResponse.toString());
                }
            }

            @Override
            public void onFailure(Call<RespuestaEvidenciaImagenDTO> call, Throwable t) {
                Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();

            }
            //esta es la parte que agrega el encabezado a la solicitud


        });


    }

RespuestaEvidenciaImagenDTO

public class RespuestaEvidenciaImagenDTO {

    @SerializedName("errors")
    @Expose
    private String errors;
    @SerializedName("message")
    @Expose
    private String message;
    @SerializedName("status")
    @Expose
    private Integer status;
    @SerializedName("data")
    @Expose
    private DataEvidenciaImagen data;

    public String getErrors() {
        return new String( errors );
    }

    public void setErrors(String errors) {
        this.errors = errors;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public DataEvidenciaImagen getData() {
        return data;
    }

    public void setData(DataEvidenciaImagen data) {
        this.data = data;
    }


0 个答案:

没有答案