Android Retrofit 2.0框架上传图片解决方案
程序员文章站
2024-02-23 22:34:28
本文为大家分享了 android retrofit 2.0框架上传图片解决方案,具体内容如下
1.单张图片的上传
/**
* 上传一张图片...
本文为大家分享了 android retrofit 2.0框架上传图片解决方案,具体内容如下
1.单张图片的上传
/** * 上传一张图片 * @param description * @param imgs * @return */ @multipart @post("/upload") call<string> uploadimage(@part("filename") string description, @part("file\"; filename=\"image.png\"")requestbody imgs);
2.多张图片的上传
/** * 上传三张图片 * @param description * @param imgs * @param imgs1 * @param imgs3 * @return */ @multipart @post("/upload") call<string> 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张,要想多上传目前我发现的方法就是想要多传一张,就多增加一个参数
@part("file\"; filename=\"image.png\"")requestbody imgs,以此类推。
大家看到上面觉得写法很漏,但是用于能力有限,只能想到这样。用java中的可变参数解决之后,就只能传一张。不能多张。
@multipart @post("/upload") call<string> uploadimage(@part("filename") string description, @part("file\"; filename=\"image.png\"")requestbody ...imgs);
调用:
call<string> call = apimanager.uploadimage( m[0],requestbody1,requestbody2,null);
这样写看上去很是高端,不幸的是只能传一张
3.最后是实现胡过程
3.1创建fileuploadservice接口
public interface fileuploadservice { /** * 上传一张图片 * @param description * @param imgs * @return */ @multipart @post("/upload") call<string> 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<string> 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; call<string> call = apimanager.uploadimage( m[0],requestbody1,requestbody2,null); call.enqueue(new callback<string>() { @override public void onresponse(response<string> response, retrofit retrofit) { log.v("upload", response.message()); log.v("upload", "success"); } @override public void onfailure(throwable t) { log.e("upload", t.tostring()); } }); }
4.服务器段代码:
服务器用的是struts接收:
@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)); } }
关于android上传功能的更多内容请点击专题:android上传操作汇总进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助。
推荐阅读
-
Android Retrofit 2.0框架上传图片解决方案
-
Android使用Retrofit仿微信多张图片拍照上传
-
Android使用Retrofit仿微信多张图片拍照上传
-
Android Retrofit实现多图片/文件、图文上传功能
-
Retrofit2.0 实现图文(参数+图片)上传方法总结
-
Android Retrofit实现多图片/文件、图文上传功能
-
Retrofit2.0 实现图文(参数+图片)上传方法总结
-
kingeditor(jsp)与SSH三大框架整合上传图片出错问题解决方案
-
Android Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 三 文件上传(支持多文件/多图片上传)
-
Retrofit 2.0 :轻松实现文件/多图片上传/Json字符串