1.图片上传
@Multipart @POST("general/uploadVideo") Observable<Response<FileUrlBean>> upload(@Part() MultipartBody.Part body);
设置MultipartBody.Part参数
private RequestBody getRequestBody(File file) { return RequestBody.create(MediaType.parse("multipart/form-data"), file); // return RequestBody.create(MediaType.parse("image/png"), file); } private MultipartBody.Part getPar(File file) { return MultipartBody.Part.createFormData("file", file.getName(), getRequestBody(file)); }
2.图文上传
@Multipart @POST("upload") Call<ResponseBody> upload(@Part("description") RequestBody description, @Part MultipartBody.Part file);
//先创建 service FileUploadService service = retrofit.create(FileUploadService.class); //构建要上传的文件 File file = new File(filename); RequestBody requestFile = RequestBody.create(MediaType.parse("application/otcet-stream"), file); MultipartBody.Part body = MultipartBody.Part.createFormData("aFile", file.getName(), requestFile); String descriptionString = "This is a description"; RequestBody description = RequestBody.create( MediaType.parse("multipart/form-data"), descriptionString); Call<ResponseBody> call = service.upload(description, body); call.enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { System.out.println("success"); } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { t.printStackTrace(); } });
3. 使用HashMap和RequestBody一起上传