retrofit2上传文件总结
来源:互联网 发布:mac os sierra文件 编辑:程序博客网 时间:2024/06/01 09:41
使用Retrofit1.X版本上传文件是这样的:
public interface ApiManager { @Multipart @POST("/user/addCarInfo") void addCarInfo(@QueryMap Map<String, Object> options, @Part("file") TypedFile file, Callback<JsonElement> response);}
然而在2.X版本中,TypedFile被隐藏了,所以无法使用,那么可以使用PartMap上传一个或多个文件。
一.上传一个文件
1.定义接口:
@Multipart @POST("vi/read") Observable<String> upload(@PartMap Map<String, RequestBody> params);
2.上传文件:
//上传图片 Map<String, RequestBody> map = new HashMap<String, RequestBody>(); //根据文件扩展名获得MimeType String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(file.getAbsolutePath())); //创建RequestBody RequestBody requestBody = RequestBody.create(MediaType.parse(mimeType), file); map.put(Constant.UPLOAD_FILE_KEY + file.getName(), requestBody); MyLog.d("Image Path : " + file.getAbsolutePath()); UCService.createUCService().upload(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<String>() { @Override public void call(String response) { MyLog.d("upload image response : " + response); if (!TextUtils.isEmpty(response)) { handleParseVinResults(response); } } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { MyLog.d("upload image error : " + throwable.getMessage()); } });
二.上传多个文件
//文件路径
String path= Environment.getExternalStorageDirectory().getAbsolutePath();
File file1 = new File(rootPath + "/test1.docx");
File file2 = new File(rootPath + "/test2.rar");
//获取文件mimetype
Map<String, RequestBody> params = new HashMap<>();
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(file1.getPath()));
String mimeType2 = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(file2.getPath()));
//创建RequestBody
RequestBody fileBody1 = RequestBody.create(MediaType.parse(mimeType), file1);
RequestBody fileBody2 = RequestBody.create(MediaType.parse(mimeType2), file2);
params.put("file\"; filename=\"" + file1.getName() + "", fileBody1);
params.put("file\"; filename=\"" + file2.getName() + "", fileBody2);
//请求
UCService.createUCService().upload(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<String>() {
@Override
public void call(String response) {
MyLog.d("upload image response : " + response);
if (!TextUtils.isEmpty(response)) {
handleParseVinResults(response);
}
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
MyLog.d("upload image error : " + throwable.getMessage());
}
});
- retrofit2上传文件总结
- Retrofit2 使用,文件上传
- retrofit2 文件上传
- 使用Retrofit2 RxJava 文件上传
- retrofit2上传文件参数问题
- android retrofit2 文件上传(一)
- Retrofit2.0 上传文件和下载文件
- retrofit2.0 使用笔记-文件上传功能
- Retrofit2 multpart多文件上传详解
- Retrofit2 multpart多文件上传详解
- Retrofit2 multpart多文件上传详解
- Retrofit2.0上传图片文件件整理
- Android Retrofit2和Kotlin结合上传文件
- Retrofit2 & RxJava2实现单文件和多文件上传
- 使用Retrofit2.0实现Google Drive文件上传进度显示
- Android Retrofit2.0实现文件上传和下载
- Android Retrofit2.0-post&get请求&文件上传&结合Rxjava
- retrofit2一个key值上传多个文件
- mac下 ruby version 升级2.2.2
- Codeforces Problem 710B Optimal Point on a Line(距离之和最小)
- OC-文件系统操作
- 在水经注微图中如何复制已绘制对象
- 关于夺宝类项目,审核问题
- retrofit2上传文件总结
- jquery.cookie中的操作
- 算法之----欧拉回路,欧拉通路,半欧拉图
- bootbox 使用方式
- 关于UIView的autoresizingMask属性的研究
- Linux使用tcpdump命令抓包保存pcap文件wireshark分析
- C++数组
- 网络扫描工具NMAP的安装
- window.name实现页面跳转时数据传递