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 ,同样的代码,同样的配置 ...
随机推荐
- JAVA之Mybatis基础入门--框架搭建与简单查询
JAVA中,操作数据库有JDBC.hibernate.Mybatis等技术,今天整理了下,来讲一讲下Mybatis.也为自己整理下文档: hibernate是一个完全的ORM框架,是完全面向对象的.但 ...
- 如何在vue+element中实现选择框和穿梭框的根据拼音以及拼音首字母以及汉字的模糊搜索
1.汉字: 直接添加对应的 filterable 2.拼音: 穿梭框和选择器的实现方式有所不同 选择器: <1>下载pinyin-match: npm i --save ...
- JAVA的单元测试技术
1.选定开发工具 选定eclipse为开发工具,用JAVA进行编程,实现此次测试. 2.编写需要被测试的java类 此次我们以顺序查找与二分查找法为例. package com.mycode.tuil ...
- String 相关
1. 输出结果为 true,"hello" + 1 在编译期间就被优化成了 "hello1",因此在运行期间,变量 a 和变量 b 指向的是同一个对象 Stri ...
- upload三种上传方式(上)---Servlet---post---commons-fileupload.1.2.1.jar方式请求上传文件
上传前进行的配置选项: 1.在下方的Servers中,右键你的tomcat--open,选中下面两个配置. 第一个:Serve modules without publishing 作用:tomcat ...
- LeetCode 142. Linked List Cycle II 判断环入口的位置 C++/Java
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ...
- JSON语法
JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. ...
- Spring整合quart初识
Spring集成quart有两种方式,一种是实现Job接口,一种是继承QuartzJobBean 刚开始报错:持久化时未序列化异常 <bean id="simpleJobDetail& ...
- 使用idea建立逆向工程
逆向工程(Mybatis Generator) 概念 mybatis Generator 中文官网 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表 自动生成m ...
- Java数据类型(primitive)原始数据类型
1.小心别溢出来. 要确保变量能存下来所保存的值. 你无法用小杯子装大值.好吧,其实可以,但是会损失某些信息,也就是所说的溢位.当判断到所使用的容器不足以装载时,编译器会试着防止珍重情况发生.举例来说 ...