Retrofit 上传图片(单张)

服务器端返回信息的格式是:{"code":20000,"imgUrl":""}

编写interface——ApiUploadImg:

/**
 * 
 *上传图片接口
 */
public interface ApiUploadImg {
   /**图片上传API*/
  /*  @POST("Comm")
    Observable<ResponseApi<UploadImgResponse>> uploadImg(@Body RequestApi RequestApi);*/

   @Multipart
   @POST("Comm/uploadImg")
   Call<ResponseBody> uploadImage(/*@Part("fileName") String description,*/
                            @Part("file\"; filename=\"image.png") RequestBody imgs);

//    @Multipart
//    @POST("Comm/uploadImg")
//    Observable<ResponseApi<UploadImgResponse>> uploadImg( @Part("description") RequestBody description, @Part MultipartBody.Part file);

    @Multipart
    @POST("Comm/uploadImg")
    Call<UploadImgResponse> uploadImg( @Part("description") RequestBody description, @Part MultipartBody.Part file);
}
使用:

private void upLoadImg(String imgStr) {
        File file = new File(imgStr);
        // create RequestBody instance from file
        RequestBody requestFile =
                RequestBody.create(MediaType.parse("multipart/form-data"), file);

        // MultipartBody.Part is used to send also the actual file name
        MultipartBody.Part body =
                MultipartBody.Part.createFormData("picture", file.getName(), requestFile);

        // add another part within the multipart request
        String descriptionString = "hello, this is description speaking";
        RequestBody description =
                RequestBody.create(
                        MediaType.parse("multipart/form-data"), descriptionString);

        // create upload service client
        ApiUploadImg service = RetrofitUtil.getInstance().getService(ApiUploadImg.class);

        // finally, execute the request
        Call<UploadImgResponse> call = service.uploadImg(description, body);
        call.enqueue(new Callback<UploadImgResponse>() {
            @Override
            public void onResponse(Call<UploadImgResponse> call, Response<UploadImgResponse> response) {
                if (null != response) {
                    int code = response.body().getCode();
                    String imgUrl = response.body().getImgUrl();

                        switch (code) {
                            case 50000:
                                ToastUtil.toast(getMyActivity(), "上传图片偏成功");
                                break;
                            case 80020:
                                ToastUtil.toast(getMyActivity(), "上传图片失败,图片格式不正确");
                                break;
                            case 80021:
                                ToastUtil.toast(getMyActivity(), "上传图片失败,图片大小不正确");
                                break;
                        }
                        Log.e(TAG, "图片路径:" + imgUrl);


                } else {
                    ToastUtil.toast(getMyActivity(), getResources().getString(R.string.server_null));

                }

            }

            @Override
            public void onFailure(Call<UploadImgResponse> call, Throwable e) {
                ToastUtil.toast(getMyActivity(), getResources().getString(R.string.connect_server_error) + e.getMessage());

            }
        });

    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值