使用Retrofit上传和下载

 

上传文件

// 把文件封装为RequestBody
RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), file);

// 把RequestBody封装为MultipartBody.Part
MultipartBody.Part part = MultipartBody.Part.createFormData("pic", "image.png", body);

// 声明式请求
@Multipart
@POST("url")
Call<ResponseBody> uploadFile(
	@Part("pic"; filename="image.png") RequestBody body,
	@Part MultipartBody.Part part
);

其中,如果以RequestBody对象为参数,注解Part必须有参数;如果以MultipartBody.Part对象为参数,注解Part可以没参数,若有将覆盖MultipartBody.Part对象中的成员变量。

下载文件

// 声明式请求
@Streaming
@GET
Call<ResponseBody> download(@Url String fileUrl)