Retrofit2 上传图片等文件
普通写法:
- //创建表单的普通字段
public static RequestBody createFormBody(String content) {- RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), content);
- return body;
- }
- //创建Multipart, fieldName为表单字段名
- public static MultipartBody.Part createFilePart(String fieldName, File file) {
- RequestBody requestFile = RequestBody.create(MediaType.parse("application/otcet-stream"), file);
- MultipartBody.Part body = MultipartBody.Part.createFormData(fieldName, file.getName(), requestFile);
- return body;
- }
- //Service方法, 普通form表单使用RequestBody, 并且@Part注解要写表单字段名
- //文件用MultipartBody.Part
- @Multipart
- @POST(API.VIDEO_MODULE_UPLOAD_VIDEO)
- Call<Object> uploadImage(@Part MultipartBody.Part imagePicFile,
- @Part MultipartBody.Part videoFile,
- @Part("videoDescription") RequestBody desc,
- @Part("videoPicWidth") RequestBody videoPicWidth,
- @Part("videoPicHeight") RequestBody videoPicHeight);
- //上传
- getService(VideoService.class).uploadVideo(
- createFilePart("videoPicFile",new File(mCoverPath)),
- createFilePart("videoFile",new File(mPath)),
- createFormBody(etVideoDesc.getText().toString().trim()),
- createFormBody(width),
- createFormBody(height))
- .enqueue(new JsonResultCallback<Object>(context()) {
- @Override
- public void onSuccess(Call<Object> call, Object data) {
- super.onSuccess(call, data);
- //.....
- }
- @Override
- public void onFinish(Call<Object> call) {
- //...
- }
- });
注意: 如果你使用了 GsonRequestBodyConverter 或类似的RequestBodyConverter, 一定记得要略过@Multipart 标注的Service方法, 否则你的File会被转为文件路径的字符串, 这是一个坑
另一种, 自定义FileRequestBodyConverter:
未完待续...
相关链接, 这里有实现
Retrofit2 上传图片等文件的更多相关文章
- 用AJAX实现上传图片或者文件的方法
大家好,我是小C,最近在项目中用到ajax上传图片文件,本篇我们就说说ajax上传文件. 我们平时用到的AJAX,大部分都是传几个参数就可以了.简单说就是传几个字符串. $.ajax({ url: u ...
- sau交流学习社区--在element-ui中新建FormData对象组合上传图片和文件的文件对象,同时需要携带其他参数
今天有一个坑,同时要上传图片和文件,而且图片要展示缩略图,文件要展示列表. 我的思路是: 首先,只上传附件照片,这个直接看ele的官方例子就行,不仅仅上传附件照片,还同时上传其他参数. 然后,再做上传 ...
- flask上传图片或者文件
在flask unittest自动化测试中如何上传图片或者文件 import StringIO picture = StringIO.StringIO(open('/home/admin/Pictur ...
- ajax 提交所有表单内容及上传图片(文件),以及单独上传某个图片(文件)
我以演示上传图片为例子: java代码如下(前端童鞋可以直接跳过看下面的html及js): package com.vatuu.web.action; import java.io.File; imp ...
- php无刷新上传图片和文件
核心思想:通过Html的iframe标签属性操作顶级窗口,再用php动态无刷新上传图片文件. 示例如下: demo |------uploads #存放上传的文件 |------index.php | ...
- 关于Asp.Net Mvc3.0 使用KindEditor4.0 上传图片与文件
http://blog.csdn.net/fyxq14hao/article/details/7245502 今天我们的Asp.Net Mvc 3的项目中,把KindEditor3.9改为 KindE ...
- Ueditor 1.4.3 单独调用上传图片,或文件功能
第一步, 引入文件 <script src="ueditor/ueditor.config.js" type="text/javascript" char ...
- yii中上传图片及文件
Yii 提供了 CUploadedFile 来上传文件,比如图片,或者文档. 官方关于这个类的介绍 : http://www.yiichina.com/api/CUploadedFile CUploa ...
- 在.net MVC中异步上传图片或者文件
@using (Ajax.BeginForm("AddMessages", "MenuInfo", new AjaxOptions { HttpMethod ...
随机推荐
- python-认识Socket[入门篇]
什么是socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链 ...
- Ignatius and the Princess III(母函数)
Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- Class constructor
// example: class constructor #include <iostream> using namespace std; class Rectangle { in ...
- ZOJ 3829 Known Notation (2014牡丹江H称号)
主题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=5383 Known Notation Time Limit: 2 S ...
- CentOS 6.2图形界面自定义开启终端快捷键
菜单: System->Preferences->Keyboard Shortcuts 在Desktop分类下找到"Run a terminal" 点击Run a te ...
- 防止自己的网站被别人frame引用造成钓鱼
自己负责的某一网站,最近被不法份子通过<frame>的方式引入,用户点击对方的域名后,看到的内容跟自己网站一模一样.但是右击查看源码就会发现其中的原理: <!DOCTYPE HTML ...
- 转场动画2-Pop动画
上一篇试讲push动画,这篇分解pop动画 里面关于矩阵有不懂得,参考CATransform3D 特效详解 上图(虚拟机下,图是渣渣 ) 代码直接上 // // PopTransition.h // ...
- mysql save or update
原文:http://www.bitscn.com/pdb/mysql/201503/473268.html 背景 在平常的开发中,经常碰到这种更新数据的场景:先判断某一数据在库表中是否存在,存在则 ...
- BZOJ 4197: [Noi2015]寿司晚宴( dp )
N^0.5以内的质数只有8个, dp(i, j, k)表示用了前i个大质数(>N^0.5), 2人选的质数(<=N^0.5)集合分别为j, k时的方案数. 转移时考虑当前的大质数p是给哪个 ...
- Do not go gentle into that good night
Do not go gentle into that good night By:Dylan Thomas Do not go gentle into that good night,Old ag ...