Retrofit 2.0 上传文件
1.用MultipartBody.Part的方式上传文件(单文件上传)(表单方式)
@Multipart
@POST("xxx/xxx")
Call<ResponseBody> upload(@Part MultipartBody.Part part);

其中的“photos”是与服务器端预定的文件参数名
2.用RequestBody的方式上传文件(表单方式,可多上传)

/**
* 多张图片上传
*/
private void initUpateBitmap2() { //获取图片路径,这只是个简单的例子,项目开发中会有很多图片需要上传,一般从相册和相机里获取,并且保存到后台服务器时必须自己定义名字
// ,这样就不会发生图片替换(原因名字重复)
File file = new File(Environment.getExternalStorageDirectory() + "/" + "retrofit/" + "ceshi.jpg");
File file2 = new File(Environment.getExternalStorageDirectory() + "/" + "retrofit/" + "ceshi2.jpg");
File file3 = new File(Environment.getExternalStorageDirectory() + "/" + "retrofit/" + "ceshi3.jpg");
File file4 = new File(Environment.getExternalStorageDirectory() + "/" + "retrofit/" + "ceshi4.jpg"); RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
RequestBody requestBody2 = RequestBody.create(MediaType.parse("multipart/form-data"), file2);
RequestBody requestBody3 = RequestBody.create(MediaType.parse("multipart/form-data"), file3);
RequestBody requestBody4 = RequestBody.create(MediaType.parse("multipart/form-data"), file4);
RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), file);
//传一张图片就要增加一个参数
String name = "photo\"; filename=\"ceshi.jpg\"";
String name2 = "photo\"; filename=\"ceshi2.jpg\"";
String name3 = "photo\"; filename=\"ceshi3.jpg\"";
String name4 = "photo\"; filename=\"ceshi4.jpg\"";
HashMap<String, RequestBody> map = new HashMap<>();
map.put(name, requestBody);
map.put(name2, requestBody2);
map.put(name3, requestBody3);
map.put(name4, requestBody4); RetrofitHelper.getInstance().uploadFile2(map, new RetrofitHelper.OnSuccessListener() {
@Override
public void onSuccess(Object o) {
Log.e("", "成功");
} @Override
public void onFaile() {
Log.e("", "失败"); }
});
}
通用的带参数和文件上传
接口定义,注意这个时候没有@Multipart
@POST("upload")
Call<ResponseBody> uploadFile(@Body RequestBody body);
RequestBody body=new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("userName","lange")
.addFormDataPart("token","dxjdkdjkj9203kdckje0")
.addFormDataPart("header",file.getName(),fileRQ)
.build();
Call<ResponseBody> uploadCall = downloadService.uploadFile(body);
或者
@Multipart
@POST("postFied")
Call<Void> postFied(@PartMap Map<String,String> map, @Part MultipartBody.Part file); File file=new File("/sdcard/shumei.txt");
RequestBody body=RequestBody.create(MediaType.parse("application/octet-stream"),file);
// RequestBody body=RequestBody.create(MediaType.parse("multipart/form-data"),file);
MultipartBody.Part part =MultipartBody.Part.createFormData("file",file.getName(),body);
Map<String, String> map = new HashMap<>();
map.put("name","123456");
Call<Void> liing = api.postFied(map,part);
Retrofit 2.0 上传文件的更多相关文章
- Servlet学习:(三)Servlet3.0 上传文件
转: Servlet学习:(三)Servlet3.0 上传文件 2018年08月03日 11:57:58 iDark_CSDN 阅读数:362 一.注意事项 客户端(浏览器) 表单的提交方法必须是 ...
- 怎样解决IIS6.0上传文件限制的问题?
我们用IIS发布的Bs项目,如果进行文件上传,在上传文件的时候,无法上传文件大小超过4M的文件 设置文件上传大小的方法,就是修改项目的web.config配置 在项目中的web.config文件中,添 ...
- .Net core3.0 集成swagger5.0上传文件
.Net core 3.0已经更新了,相信有挺多博主大佬们都更新了如何在.Net core3.0使用swagger,这里就不详细说了. 我们知道,如果.net core 2.x使用swagger上传文 ...
- uploadify加ASP.NET MVC3.0上传文件(可多条)
页面代码: <div id="fileQueuePlug"></div> <input type="file" name=&quo ...
- 使用Commons FileUpload 1.3.3和Servlet 3.0上传文件
简介 Commons FileUpload可以轻松地为web应用程序添加强大,高性能的文件上传功能.Servlet3.0之前的web应用程序需要使用Commons FileUpload组件上传文件,但 ...
- 【JavaEE企业应用实战学习记录】servlet3.0上传文件
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/10/6 Time: 14:20 To change this tem ...
- IIS7.0上传文件限制的解决方法
在 Windows7(iis7.5).Win2008(iis 7.0)和Win2003(iis 6.0) 中,默认设置是特别严格和安全的,这样可以最大限度地减少因以前太宽松的超时和限制而造成的攻击. ...
- YII2.0上传文件
针对于YII2.0官方手册来说,我稍微修改了一些内容具体的就是把model层里定义的uoload方法在controller方法里合并了 创建模型 namespace app\models; use y ...
- 「NetworkOnMainThreadException」:Android 2.3到Android 4.0上传文件的问题
我在百度知道上的提问: 『之前我用的一段文件上传的代码,配合服务器端的servlet,实现了上传手机上的文件的功能:但是后来我把手机的Android系统从2.3升级到了4.0 ,同样的代码,同样的配置 ...
随机推荐
- CentOS7安装HDP集群
之前安装大数据组件都是一个一个手动安装的,最多弄一个脚本自动安装.手动安装麻烦不说,还没有可以监控集群的可视化界面,而且组件的稳定性也是个问题. 所以我们应该试一试HDP和CDH这种企业级的hadoo ...
- C#求一组数的众数
private int GetModeNum(List<int> listValue) { List<int> listName = new List<int>() ...
- 理解Linux文件权限
任何完整的系统都应该具备有某种形式的安全性.必须用过某种机制来保护文件不被未授权的用户查看或修改:Linux系统遵循了Unix的文件权限的方法,来根据用户与用户组授权,实现文件安全访问. 1.Linu ...
- ubuntu环境部署项目
安装python3.6 第一步:sudo add-apt-repository ppa:jonathonf/python-3.6 如果报错为:sudo: add-apt-repository: com ...
- 用户未登录或Session超时时重定向到登录页,不那么简单
在网站开发中,我们经常有这样的场景出现: 情景1:对未登录的用户或没有权限的用户,当其想访问某个受限网页时,系统要能够自动转到登录页面. 情景2:对于用session保存用户状态的情况还有这样一种 ...
- 在引用阿里云库或其他库的时候,经常发生框架不兼容(原因是系统采用:Microsoft .NET Framework 4 Client Profile ),请改为Microsoft .NET Framework 4
在引用阿里云库或其他库的时候,经常发生框架不兼容(原因是系统采用:Microsoft .NET Framework 4 Client Profile ),请改为Microsoft .NET Frame ...
- AS3获得当前文件的文件名
//当前文件的完整路径var fileUrl:String = this.loaderInfo.url;//查找路径的最后一个"/"var flag:int = fileUrl.l ...
- JS防抖与节流函数封装
防抖 在监听scroll事件的时候经常会用到防抖,当滚动到某一位置而触发状态,从而不会出现频繁滚动持续触发事件的情况 防抖的事件处理机制仅触发一次且必须是结束状态下才会执行 function debo ...
- Unity添加多个可视镜头Preview功能(一)
打算写这样一个工具,可用于影片镜头调节,房产漫游的可视化,建立多个可视镜头,可以动态调整各个镜头的位置和旋转方向,同时,还能在类似于Camera 的Preview这样的小窗口中查看该镜头(在小窗口中点 ...
- Apple watch ,小米微信通知
Applewatch怎么显示微信通知?iWatch显示微信消息通知设置方法.大家都知道Applewatch上收到微信消息,iWatch是不会显示通知的,需要用户自行设置才行.下面小编来教大家如何设置A ...