retrofit2 上传图片

直接上代码

接口请求代码

NewResultApi.modifyUserInfo(userModel.getUid(), userModel.getToken(), sex, intro,
                name, city, birthday,new File(filename), new ICallBack<BaseResultBean<UserDetails>>() {
                    @Override
                    public void onSuccess(String flag, String key, BaseResultBean<UserDetails> userDetailsBaseResultBean) {
                        UserDateilsTable.getUserDao(context).saveContactList(
                                userDetailsBaseResultBean.getResult(), "1");
                        ToastUtil.show(context, getString(R.string.toast_save_succeed));
                        UserInfoActivity.this.finish();
                        pd.dismiss();
                    }

                    @Override
                    public void onFailure(String flag, String key, String why) {
                        pd.dismiss();
                        ToastUtil.show(context, why);
                    }
                });

  

public static Call<BaseResultBean<UserDetails>> modifyUserInfo(int uid, String token, String sex, String intro, String username, String city,
                                                                   String birthday, File imagePath, final ICallBack<BaseResultBean<UserDetails>> callBack){

        MultipartBody.Part filePart = MultipartBody.Part.
                createFormData("icon", imagePath.getName(), RequestBody.create(MediaType.parse("image/*"), imagePath));
        Call<BaseResultBean<UserDetails>> call=BuildService.getMeiNvService().modifyUserInfo(stringRequestBody(AppConfig.VER+""),
                stringRequestBody("user_modify_userinfo"),
                stringRequestBody(uid+""),stringRequestBody(token),stringRequestBody(sex),stringRequestBody(intro),stringRequestBody(username),
                stringRequestBody(city),stringRequestBody(birthday), filePart);
        call.enqueue(new Callback<BaseResultBean<UserDetails>>() {
            @Override
            public void onResponse(Call<BaseResultBean<UserDetails>> call, Response<BaseResultBean<UserDetails>> response) {
                if (response.isSuccessful()) {
                    BaseResultBean<UserDetails> resultBean = response.body();
                    if (resultBean.getCode() == 200) {
                        //数据正确,把数据返回
                        callBack.onSuccess("", "", resultBean);
                    } else {
                        //数据错误
                        callBack.onFailure("", "", resultBean.getMsg());
                    }
                }
            }

            @Override
            public void onFailure(Call<BaseResultBean<UserDetails>> call, Throwable t) {
                callBack.onFailure("", "", "失败");
            }
        });
        return  call;
    };

  

 @Multipart
    @POST("api.ashx")
    Call<BaseResultBean<UserDetails>> modifyUserInfo(@Part("ver") RequestBody ver,
                                                     @Part("action") RequestBody action,
                                                     @Part("uid") RequestBody uid,
                                                     @Part("token") RequestBody token,
                                                     @Part("sex") RequestBody sex,
                                                     @Part("intro") RequestBody intro,
                                                     @Part("username") RequestBody username,
                                                     @Part("city") RequestBody city,
                                                     @Part("birthday") RequestBody birthday,
                                                     @Part MultipartBody.Part  file);

  

    private static RequestBody stringRequestBody(String params){
        return  RequestBody.create(MediaType.parse("text/plain"), params);
    }

  

时间: 2024-10-16 10:01:11

retrofit2 上传图片的相关文章

Retrofit2 上传图片等文件

普通写法: //创建表单的普通字段public static RequestBody createFormBody(String content) { RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), content); return body; } //创建Multipart, fieldName为表单字段名 public static MultipartBody.Part cr

是时候来了解一波Retrofit2了。

之前的网络请求一直是用的okhttp,这段时间了解了一下retrofit2,发现比自己封装的okhttp灵活很多,他的所有请求方式都是用接口实现,不像okhttp那样,万一想获取一个新的callback,又得重新封装一个方法. 项目只要导入了okhttp,retrofit默认用okhttp请求网络,返回的类型是Call,那么就响应OkHttp的callback 可以配合RxJava使用,返回的类型设置为Oservable. 导包: compile 'io.reactivex:rxjava:1.1

本地上传图片预览

<!DOCTYPE html > <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>图片上传本地预览,获得图片的base64(可压缩)</title> <style type="text/css"> .upload_image {

java web应用用户上传图片的存储地址

原来工程的上传图片存储地址在web应用的目录下,并且是硬编码到其中的: 每次使用maven tomcat:redeploy以后,这个目录就没有了. 现在想要把上传图片的位置移动到tomcat的webapps目录中专门存放图片的一个目录下. 即,新建的一个images目录用来存放web应用的图片们. 这样就把工程和用户上传图片分离了,以后在redeploy时也不用预先备upload目录,然后再拷贝回去,因而在web应该更新时比较方便些.此外,还想改变文件路径被硬编码到java文件中的现状,所以将文

微信JS-SDK实现上传图片功能

最近在项目开放中,有一个在微信WEB项目中上传图片的需求,一开始使用了传统的<input type="file">的方式去实现,但是后面发现在使用这种传统模式时会由于手机系统的差异而导致一系列的问题,后改用微信JSSDK的方式来实现. 总的来说,利用JSSDK来实现该功能一共分为四步. 1. 调用wx.config(),初始化jssdk的配置,并在jsApiList中配置上传图片需要的四个api('chooseImage','previewImage','uploadIma

Retrofit2实现App自动更新

原理 Retrofit2和okhttp实现了apk的下载 自定义类实现Retrofit2的Callback类在里面通过IO流写入文件并且使用RxBus订阅下载进度 自定义类实现okhttp3的ResponseBody类并且在里面使用RxBus发布下载进度信息 在Service中使用Retrofit在后台下载文件 发送Notifaction到通知栏前台界面展示进度情况 实现步骤 1.创建UpdateManger管理类 这个类主要写了两个管理更新和弹框的方法. /** - 检测软件更新 */ pub

jquery html5 file 上传图片显示图片

最近做了一个小例子,在上传用户图像时,如何在上传图片时显示图片.在网上找了很多资料也未能如愿,如是,就用jquery ,html5,实现了,由于开发是在linux 所以未能在ie下测试,在forefox,chrom下是可以的. 一.html下的代码是: <div class=' input_box' > <span class='spac' >头</span>相:<input class="input_style" id="'head

jquery实现上传图片及图片大小验证、图片预览效果代码

jquery实现上传图片及图片大小验证.图片预览效果代码 上传图片验证 */ function submit_upload_picture(){     var file = $('file_c').value;     if(!/.(gif|jpg|jpeg|png|gif|jpg|png)$/.test(file)){            alert("图片类型必须是.gif,jpeg,jpg,png中的一种")        }else{      $('both_form')

检验上传图片大小、尺寸、类型的两种实现方案

做图片上传功能时,我们经常会遇到一个问题就是,就是要对上传的图片进行一个校验,校验的东西包括图片的大小.尺寸(即宽和高)以及图片的类型. 今天我主要介绍两种方式来进行图片的校验,一种是在前端用js校验,另一种是放在服务器端校验.接下来我们来进行介绍 第一种:放在前端用js校验 下面直接贴源代码,注释也写在代码里面 1 <%@ page language="java" contenttype="text/html; charset=UTF-8" pageenco