使用Retrofit上传图片的注意事项

/**

* 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 ,总之是什么,你就放什么;

每一步缺一不可;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容