/**
* 上传一张图片
* @param description
* @param imgs
* @return
*/
@Multipart
@POST("/upload")
Call uploadImage(@Part("fileName") String description,
@Part("file\"; filename=\"image.png\"")RequestBody imgs);
/**
* 上传三张图片
* @param description
* @param imgs
* @param imgs1
* @param imgs3
* @return
*/
@Multipart
@POST("/upload")
Call uploadImage(@Part("fileName") String description,
@Part("file\"; filename=\"image.png\"")RequestBody imgs,
@Part("file\"; filename=\"image.png\"")RequestBody imgs1,
@Part("file\"; filename=\"image.png\"")RequestBody imgs3);
@Multipart
@POST("/upload")
Call uploadImage(@Part("fileName") String description,
@Part("file\"; filename=\"image.png\"")RequestBody ...imgs);
Call call = apiManager.uploadImage( m[0],requestBody1,requestBody2,null);
3.1创建FileUploadService接口
public interface FileUploadService { /** * 上传一张图片 * @param description * @param imgs * @return */ @Multipart @POST("/upload") CalluploadImage(@Part("fileName") String description, @Part("file\"; filename=\"image.png\"")RequestBody imgs); /** * 上传三张图片 * @param description * @param imgs * @param imgs1 * @param imgs3 * @return */ @Multipart @POST("/upload") Call uploadImage(@Part("fileName") String description, @Part("file\"; filename=\"image.png\"")RequestBody imgs, @Part("file\"; filename=\"image.png\"")RequestBody imgs1, @Part("file\"; filename=\"image.png\"")RequestBody imgs3); }
3.2创建Retrofit对象
private static final Retrofit sRetrofit = new Retrofit .Builder() .baseUrl(ENDPOINT) .addConverterFactory(GsonConverterFactory.create()) // .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // 使用RxJava作为回调适配器 .build(); private static final FileUploadService apiManager = sRetrofit.create(FileUploadService.class);
3.3调用上传的方法
public static void upload(String path){ String descriptionString = "hello, this is description speaking"; String[] m = new String[2]; m[0]= "share.png"; m[1]= "Screenshot_20160128-140709.png"; File[] ssssss= new File[2]; File file1 = new File("/storage/emulated/0/sc/share.png"); File file = new File("/storage/emulated/0/Pictures/ScreenShots/Screenshot_20160128-140709.png"); ssssss[0]=file; ssssss[0]=file1; RequestBody requestBody[] = new RequestBody[3]; RequestBody requestBody1 = RequestBody.create(MediaType.parse("multipart/form-data"), file); RequestBody requestBody2 = RequestBody.create(MediaType.parse("multipart/form-data"), file1); requestBody[0]=requestBody1; requestBody[1]=requestBody2; Callcall = apiManager.uploadImage( m[0],requestBody1,requestBody2,null); call.enqueue(new Callback () { @Override public void onResponse(Response response, Retrofit retrofit) { Log.v("Upload", response.message()); Log.v("Upload", "success"); } @Override public void onFailure(Throwable t) { Log.e("Upload", t.toString()); } }); }
@Controller
public class GetToken extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private File[] file;
private String[] fileName;
public File[] getFile() {
return file;
}
public void setFile(File[] file) {
this.file = file;
}
public String[] getFileName() {
return fileName;
}
public void setFileName(String[] fileName) {
this.fileName = fileName;
}
@Action("/upload")
public void login() {
System.out.println("------"+Arrays.toString(file));
System.out.println("------"+Arrays.toString(fileName));
}
}
代码下载地址
追加:
多图上传的一种简单那写法:
public static void uploadMany(ArrayListpaths,String desp){ Map photos = new HashMap<>(); if (paths.size()>0) { for (int i=0;i stringCall = apiManager.uploadImage(desp, photos); stringCall.enqueue(new Callback () { @Override public void onResponse(Call call, Response response) { Log.d(TAG, "onResponse() called with: " + "call = [" + call + "], response = [" + response + "]"); } @Override public void onFailure(Call call, Throwable t) { Log.d(TAG, "onFailure() called with: " + "call = [" + call + "], t = [" + t + "]"); } }); }