安卓使用retrofit2 和rxjava2

url:

  

@Multipart
@POST(UrlTools.STORYUPLOAD)
Observable<Result> saveReport(@Part List<MultipartBody.Part> parts)

activity:

 if (contentText.equals("") && mSelected.size() < 1) {
ToastUtils.showBottomToast("请输入内容", 0);
return;
} ContentResolver contentResolver = getContentResolver();
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("name", contentText);//表单类型; add需要的文本,第一个参数与后台对应,传输需要的文本 for (int i = 0; i < mSelected.size() - 1; i++) {
File file1 = null;
file1 = new File(getFilePathFromContentUri(mSelected.get(i), contentResolver));
RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file1);
builder.addFormDataPart("file", file1.getName(), imageBody);//imgfile 后台接收图片流的参数名
}
List<MultipartBody.Part> parts = builder.build().parts(); // 实现请求
utilsPresenter.getStory(VintageActivity.this, parts);

开始请求:

    //上传文件
@Override
public void upFile(BaseImpl context, List<MultipartBody.Part> parts) { RetrofitRequest.getApiService()
.saveReport( parts)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DefaultObserver<Result>(context, false) {
@Override
public void onSuccess(Result story) {
listener.onSuccess(story);
} @Override
public void onFail(Result response) {
listener.onError(response, STORYLIST);
}
});
}

Java后台 springboot2

  @RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String handleFileUpload(HttpServletRequest request) {
MultipartHttpServletRequest params = ((MultipartHttpServletRequest) request);
List<MultipartFile> files = ((MultipartHttpServletRequest) request)
.getFiles("file");
String name = params.getParameter("name");  //参数与安卓addFormDataPart的第一个参数对应
System.out.println("name:" + name);
String id = params.getParameter("id");
System.out.println("id:" + id); Map<String, String> urlMap = new HashMap<>(); MultipartFile file = null;
BufferedOutputStream stream = null;
for (int i = 0; i < files.size(); ++i) {
file = files.get(i);
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
stream = new BufferedOutputStream(new FileOutputStream(
new File("./../images/"+file.getOriginalFilename())));//存在项目根目录下
stream.write(bytes);
stream.close();
urlMap.put(SERVER_URL+"resource/images/" , file.getOriginalFilename());
} catch (Exception e) {
stream = null;
return e.toString();
}
} else {
return "空";
}
}
return “成功”;

安卓发送图片文字,java后台接收的更多相关文章

  1. Ireport5.0.1 从java后台接收list集合

    作为ireport新手,开始使用时总有很多问题,说一下今天解决的一个问题,就是怎样从java后台接收list集合并显示出列表. 1.首先要在主dataset中的Paramerters 中创建参数lis ...

  2. angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法

    本文地址:http://www.cnblogs.com/jying/p/6733408.html   转载请注明出处: 写此文的背景:在工作学习使用angular的$http.post()提交数据时, ...

  3. base64编码上传图片java后台接收实例

    原文地址:http://blog.csdn.net/tonyfreak/article/details/72522855 思路 前台传以data:image/jpeg;base64,开头的base64 ...

  4. java后台接收json数据,报错com.alibaba.fastjson.JSONObject cannot be cast to xxx

    从前台接收json封装的list数据,在后台接收时一直报错,com.alibaba.fastjson.JSONObject cannot be cast to xxx, 使用这种方式接收可以接收 @R ...

  5. Postman发送请求,及后台接收

    一.前言 在使用postman工具测试api接口的时候,如何使用 json 字符串传值呢,而不是使用 x-www-form-urlencoded 类型,毕竟通过 key-value 传值是有局限性的. ...

  6. 前台页面上传data image图片,java后台接收图片保存

    最近在项目中有这么一个需求,就是上传一个视频文件,然后要获取视频文件的第一帧图片,这个可以通过canvas获取得到,得到的是一个dataURL,之后还要将这个图片上传到云,这个时候如何操作就不清楚了, ...

  7. 手机端上传图片及java后台接收和ajaxForm提交

    有很多微信开发的项目在手机端需要传图片,但是又不想调用微信的上传图片接口,于是采取了如下做法: 使用ajaxForm提交文件所需js:jquery.form.js 页面代码: <%@ page ...

  8. FastDFS图片服务器java后台的简单调用

    工具类: package com.liveyc.common.fdfs; import org.apache.commons.io.FilenameUtils; import org.csource. ...

  9. java后台接收微信服务号/订阅号消息

    1.申请订阅号(适合个人)或者服务号(适合企业) 微信公众平台 2.填写配置 服务器地址: 需要接收消息 的服务端接口地址 令牌:通话识别码,随便写,后端接收时,使用一样的就可以了. 消息加密秘钥 : ...

随机推荐

  1. nyoj 8 一种排序(用vector,sort,不用set)

    一种排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数 ...

  2. poj 3253 Fence Repair(priority_queue)

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 40465   Accepted: 13229 De ...

  3. 【BZOJ4650&UOJ219】优秀的拆分(二分,hash)

    题意: 思路: 在实现时SA可以用hash+二分代替,会多一个log BZ上跑的飞快,但UOJ上extra卡出翔,已经放弃 不过转C或者写SA没准就过了 看来转C迫在眉睫 ; ..]of int64; ...

  4. JAVA和C语言的区别

    java语言和c语言的区别:                                      1 un 公司推出的Java 是面向对象程序设计语言,其适用于Internet 应用的开发,称为 ...

  5. spring-cloud-starter-ribbon提供客户端的软件负载均衡算法

    Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超时 ...

  6. MyBatis 3判断不为null

    <if test="type!=null and type!=''"> AND type = #{type} </if>

  7. Bootstrap基础教程:tutorialspoint-bootstrap

    来自turorialspoint的Boostrap基础教程(英文),官网:https://www.tutorialspoint.com/bootstrap/index.htm 中文版:https:// ...

  8. C语言实现单链表节点的删除(带头结点)

    我在之前一篇博客<C语言实现单链表节点的删除(不带头结点)>中具体实现了怎样在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表.代码演示样例上传至 https: ...

  9. php 把一个数组分成有n个元素的二维数组的算法

    一.第一种解法 <?php //把一个数组分成几个数组 //$arr 是数组 //$num 是数组的个数 function partition($arr,$num){ //数组的个数 $list ...

  10. LeetCode 781. Rabbits in Forest (森林中的兔子)

    题目标签:HashMap 题目给了我们一组数字,每一个数字代表着这只兔子说 有多少只一样颜色的兔子. 我们把每一个数字和它出现的次数都存入map.然后遍历map,来判断到底有多少个一样颜色的group ...