基本用法
文件1:请求返回的实体类
public class UploadBean {
private String imageUrl;
private String textFile;
public String getImageUrl() { return imageUrl; }
public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; }
public String getTextFile() { return textFile; }
public void setTextFile(String textFile) { this.textFile = textFile; }
}
文件2:定义请求接口
public interface UploadService {
// [途径A]文件上传使用MultipartBody.Part对象
@Multipart
@POST("/file/image")
Call<UploadBean> uploadDouble(@Part MultipartBody.Part file1,
@Part MultipartBody.Part file2,
@Part("username") RequestBody username,
@Part("password") RequestBody password);
}
文件3:具体调用的地方
/**
* 上传文件
*
* @param filePathName1 文件1路径及文件名
* @param filePathName2 文件2路径及文件名
*/
public void uploadFile(String filePathName1, String filePathName2) {
// 生成Retrofit
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.1.6:8080/upload/")
.addConverterFactory(GsonConverterFactory.create())
.build();
// 生成Service
UploadService uploadService = retrofit.create(UploadService.class);
// 要上传的文件
File file1 = new File(filePathName1);
File file2 = new File(filePathName2);
// 创建 RequestBody,用于封装构建MultipartBody.Part。设置MediaType:application/octet-stream(一说:multipart/form-data,待检验)
RequestBody requestBody1 = RequestBody.create(MediaType.parse("application/octet-stream"), file1);
RequestBody requestBody2 = RequestBody.create(MediaType.parse("application/octet-stream"), file2);
// MultipartBody.Part 和后端约定好Key,这里的partName暂时用"file_key_*"
MultipartBody.Part partFile1 = MultipartBody.Part.createFormData("file_key_1", file1.getName(), requestBody1);
MultipartBody.Part partFile2 = MultipartBody.Part.createFormData("file_key_2", file2.getName(), requestBody2);
// 添加参数用户名和密码,并且是文本类型,设置MediaType为文本类型(一说:multipart/form-data,待检验)
RequestBody userName = RequestBody.create(MediaType.parse("text/plain"), "username");
RequestBody password = RequestBody.create(MediaType.parse("text/plain"), "password");
// 执行请求
Call<UploadBean> ca