/**
* api接口
*/
interfaceApiService {
//上传头像
@Multipart
@POST(Constant.MEMBER_URL)
Observable<Object>upLoadImage(@Query("userId") String userId,@PartMultipartBody.Part file,@QueryMap Map<String,String> map);
}
需要注意的,我已经用黑色加粗字体显示,@Multipart 是 Retrofit 用于文件上传的注解,配合@POST一起使用;
和平时的使用 Retrofit 网络请求不一样的是,上传图片需要添加请求头,一般都是在用户信息页上传头像,就以用户信息的一般逻辑举例;
@Query("userId") String userId,这些是你的普通参数,什么用户名,密码,年龄,前端和服务器约定的是什么字段参数,就写在@Query里,用引号括起来,有多少写多少;
@QueryMap Map<String ,String> map,是前端和服务器约定好的方法 act mod;
@PartMultipartBody.Part file ,是你要上传到服务器的图片参数;
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"),file);
MultipartBody.Part body = MultipartBody.Part.createFormData("imageFile",file.getName(),requestFile);
multipart/form-data 就是决定上传头像是否成功的关键所在------请求头;
imageFile 是前端和服务器约定好的这个图片的参数名,其实和 userId , password , age等等都是同级别的参数,只不过要放在这里添加,因为是给这个 imageFile 添加请求头,当然 你那里有可能叫做 picture ,叫 image ,总之是什么,你就放什么;
每一步缺一不可;