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 ,同样的代码,同样的配置 ...
随机推荐
- 图解 (a + b) * (a + b) == a**2 + 2*a*b + b**2
示意图
- spring事务[转]
https://www.cnblogs.com/cnmenglang/p/6410848.html 先了解事务的7种传播属性: PROPAGATION_REQUIRED -- 支持当前事务,如果当前没 ...
- SSD 的介绍 -------转载
本文转载自: http://www.sohu.com/a/258190629_494938 背景 SSD(Solid-State Drive)是目前正处于鼎盛时期的存储设备.相较于传统的硬盘存储器 ...
- python之数据类型详解
python之数据类型详解 二.列表list (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...
- python向config、ini文件读取写入
config读取操作 cf = configparser.ConfigParser() # 实例化对象 cf.read(filename) # 读取文件 cf.sections() # 读取secti ...
- wechat-plus 使用node开发微信公众号
github:https://github.com/liuyinglong/node-wechatnpm:https://www.npmjs.com/package/wechat-plus insta ...
- PHP大神必须养成的十大优良习惯
1.多阅读手册和源代码 没什么比阅读手册更值得强调的事了–仅仅通过阅读手册你就可以学习到很多东西,特别是很多有关于字符串和数组的函数.就在这些函数里面包括许多有用 的功能,如果你仔细阅读手册,你会经常 ...
- flink 学习
一.运行 SockWordCount例子 1.到官网上下载 flink-1.6.2-bin-hadoop27-scala_2.11.tgz 然后加压出来 2.cd flink-1.6.2 3.打开fl ...
- 虚拟机Ubuntu18.04——gcc版本的升降
致读者:这是本人第一篇博客,小试牛刀,希望能在以后的道路中分享出更多实用的技巧和知识,大家一起进步. 操作环境: VMware Workstation 14Pro .64位Ubuntu18.04系统 ...
- RocketMQ入门(消费者)_3
消费者角色: 1. 推式(一般建议用推式) 2. 拉式 消费模式: 1. 集群(cluster) --均衡负载消费 2. 广播(broadcasting) --发布和订阅 ...