我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android Retrofit 2.0框架上传图片解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android Retrofit 2.0框架上传图片解决方案

本文为大家分享了 Android Retrofit 2.0框架上传图片解决方案,具体内容如下

1.单张图片的上传


 
 @Multipart 
 @POST("/upload") 
 Call<String> uploadImage(@Part("fileName") String description, 
   @Part("file\"; filename=\"image.png\"")RequestBody imgs); 

2.多张图片的上传


 
 @Multipart 
 @POST("/upload") 
 Call<String> uploadImage(@Part("fileName") String description, 
  @Part("file\"; filename=\"image.png\"")RequestBody imgs, 
  @Part("file\"; filename=\"image.png\"")RequestBody imgs1, 
  @Part("file\"; filename=\"image.png\"")RequestBody imgs3); 

注意:目前是提供传3张,要想多上传目前我发现的方法就是想要多传一张,就多增加一个参数
@Part("file\"; filename=\"image.png\"")RequestBody imgs,以此类推。

大家看到上面觉得写法很漏,但是用于能力有限,只能想到这样。用Java中的可变参数解决之后,就只能传一张。不能多张。


@Multipart 
 @POST("/upload") 
 Call<String> uploadImage(@Part("fileName") String description, 
  @Part("file\"; filename=\"image.png\"")RequestBody ...imgs); 

 调用:
Call<String> call = apiManager.uploadImage( m[0],requestBody1,requestBody2,null); 

这样写看上去很是高端,不幸的是只能传一张

3.最后是实现胡过程
3.1创建FileUploadService接口


public interface FileUploadService {
 
 @Multipart
 @POST("/upload")
 Call<String> uploadImage(@Part("fileName") String description,
  @Part("file\"; filename=\"image.png\"")RequestBody imgs);
 
 @Multipart
 @POST("/upload")
 Call<String> uploadImage(@Part("fileName") String description,
  @Part("file\"; filename=\"image.png\"")RequestBody imgs,
  @Part("file\"; filename=\"image.png\"")RequestBody imgs1,
  @Part("file\"; filename=\"image.png\"")RequestBody imgs3);
}

 3.2创建Retrofit对象


 private static final Retrofit sRetrofit = new Retrofit .Builder()
 .baseUrl(ENDPOINT)
 .addConverterFactory(GsonConverterFactory.create())
// .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // 使用RxJava作为回调适配器
 .build();
 private static final FileUploadService apiManager = sRetrofit.create(FileUploadService.class);

 3.3调用上传的方法


public static void upload(String path){
 String descriptionString = "hello, this is description speaking";
 String[] m = new String[2];
 m[0]= "share.png";
 m[1]= "Screenshot_20160128-140709.png";
 File[] ssssss= new File[2];
 File file1 = new File("/storage/emulated/0/sc/share.png");
 File file = new File("/storage/emulated/0/Pictures/ScreenShots/Screenshot_20160128-140709.png");
 ssssss[0]=file;
 ssssss[0]=file1;
 RequestBody requestBody[] = new RequestBody[3];
 RequestBody requestBody1 =
 RequestBody.create(MediaType.parse("multipart/form-data"), file);
 RequestBody requestBody2 =
 RequestBody.create(MediaType.parse("multipart/form-data"), file1);
 requestBody[0]=requestBody1;
 requestBody[1]=requestBody2;
 Call<String> call = apiManager.uploadImage( m[0],requestBody1,requestBody2,null);
 call.enqueue(new Callback<String>() {
 @Override
 public void onResponse(Response<String> response, Retrofit retrofit) {
 Log.v("Upload", response.message());
 Log.v("Upload", "success");
 }
 @Override
 public void onFailure(Throwable t) {
 Log.e("Upload", t.toString());
 }
 });
}

4.服务器段代码:
服务器用的是struts接收:


@Controller 
public class GetToken extends ActionSupport { 
 
 private static final long serialVersionUID = 1L; 
 private File[] file; 
 private String[] fileName; 
 public File[] getFile() { 
 return file; 
 } 
 public void setFile(File[] file) { 
 this.file = file; 
 } 
 public String[] getFileName() { 
 return fileName; 
 } 
 public void setFileName(String[] fileName) { 
 this.fileName = fileName; 
 } 
 @Action("/upload") 
 public void login() { 
 System.out.println("------"+Arrays.toString(file)); 
 System.out.println("------"+Arrays.toString(fileName)); 
 } 
} 

关于Android上传功能的更多内容请点击专题:Android上传操作汇总进行学习。

您可能感兴趣的文章:Android中Retrofit 2.0直接使用JSON进行数据交互android Retrofit2+okHttp3使用总结Android Retrofit实现多图片/文件、图文上传功能Android Retrofit和Rxjava的网络请求Android使用Retrofit仿微信多张图片拍照上传Android中Retrofit+OkHttp进行HTTP网络编程的使用指南简略分析Android的Retrofit应用开发框架源码Android app开发中Retrofit框架的初步上手使用Android Retrofit 中文乱码问题的解决办法


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android Retrofit 2.0框架上传图片解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android Retrofit 2.0框架上传图片解决方案

本文为大家分享了 Android Retrofit 2.0框架上传图片解决方案,具体内容如下 1.单张图片的上传 @Mu
2022-06-06

Discuz 6.0上传图片提示“无效的图片文件”解决方案

关键字描述:图片 文件 解决方案 无效 提示 上传 问题   &rdquoDiscuz 6.0论坛上传图片时也显示“无效的图片文件”,明明是有效图片为什么会提示是无效的图片文件呢? 后来经过我们反复测试与分析
2022-06-12

android 实现圆角图片解决方案

现在我们就来看看怎么样把图片的四角都变成圆形的,为什么要这样做那,如果要是这样界面就会非常的美观,下面我们就来看看代码吧。 java代码: 代码如下: public static Bitmap toRoundCorner(Bitmap b
2022-06-06

php图片上传不了的解决方法

这篇文章将为大家详细讲解有关php图片上传不了的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php图片上传不了的解决办法:1、开启“file_uploads”,并确定上传大小;2、修改“memo
2023-06-14

DEDE图片集上传图片时出错显示(FILEID)的解决方法

某日,某使用DeDe cms v5.5的网站在后台上传图片时出现如下错误: 作为web生手的我很是迷茫。印象里之前并没有做什么改动,于是百思不得其解。Google、百度、DeDe官网搜索了一大圈,发现有这个问题的人不少,但是没有一个给出解决
2022-06-12

dedecms ERROR: Copy Uploadfile Error!上传图片失败解决方法

ERROR:Copy Uploadfile Error! 用中文翻译的 意思是:错误显示:拷贝(复制)上传文件出错! 原因可能是上传的文件损坏编程客栈,或者是上传目录无写权限! 第一:可以尝试上传其它图片。 第二:给uploads写入权限!
2022-06-12

wordpress上传图片不自动生成缩略图的解决方法

因为站点不需要显示这么多图片,只需要原图就OK了,所以就要修改下媒体设置。打开设置->媒体,将不需要的缩略图宽度高度都设置为0就可以了。如下图:但是这样设置之后,还是会生成其它分辨率的缩略图,笔者猜测应该是主题的问题,于是就去主题内查找,笔
2022-06-12

浏览器网页无法上传图片的解决方法

这篇文章主要为大家展示了“浏览器网页无法上传图片的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“浏览器网页无法上传图片的解决方法”这篇文章吧。方法/步骤:1.刷新浏览器,点击设置图标并选
2023-06-27

Discuz上传图片失败问题排查及解决方法

标题:Discuz上传图片失败问题排查及解决方法在使用Discuz论坛系统中,用户常常会遇到上传图片失败的情况,这给用户和管理员带来了不便。本文将针对Discuz上传图片失败的问题进行排查,并提供解决方法,同时给出具体的代码示例。问题排
Discuz上传图片失败问题排查及解决方法
2024-03-10

解决android有的手机拍照后上传图片被旋转的问题

需求:做仿新浪发微博的项目,能够上传图片还有两外一个项目用到手机拍摄图片,这两个都需要把图片上传到服务器 遇到问题:有的手机拍摄的图片旋转90度,有的图片旋转了180度,有的手机是正常的,服务器要求的是正的,这样问题就来了,不能用户发个照片
2022-06-06

dedecms前台会员无法上传图片类型的解决方法

本文实例讲述了dedecms前台会员无法上传图片类型的解决方编程客栈法。分享给大家供大家参考。具体方法如http://www.cppcns.com下: 找到/include/customfields.func.php 搜索 GetField
2022-06-12

Linux图片或文件无法上传的原因和解决方法

这篇文章主要介绍“Linux图片或文件无法上传的原因和解决方法”,在日常操作中,相信很多人在Linux图片或文件无法上传的原因和解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux图片或文件无法上
2023-06-13

phpcms v9的后台编辑器无法上传图片的解决方法

今天在修改原来用phpcms v9做的网站的时候,发现碎片的编辑NUYoz器那里不能上传图片了,然后看了下后台发布文章那里,也是一样不能上传图片了。于是,搜了下教程,发现了解决方法。因为我原来用的编程客栈是二级测试域名,现在改成一级域名了,
2022-06-12

Wordpress(Wp)3.5版修改默认上传图片路径的解决方法

相信接触过WP系统的朋友都编程客栈了解,老版系统的上传图片路径是默认指向wp-content目录下的。做过WP博客的朋友应该十分熟识后台的设置,以前的版本是在Settings修改媒体Media的文件上传默认路径。但是笔者发现,在最新发布的3
2022-06-12

dedecms 5.7 文章不能上传图片的解决方法(Upload filetype not allow)

如果你后台设置可以上传图片,而上传图片出现 Uploa编程客栈d f编程客栈iletype not allow ! 仅编程客栈需要修改一个字母,即可解决问题! [upload=1] 请修改 /include/uploadsafe.inc.p
2022-06-12

Dedecms图集上传zip压缩包解压图片顺序不对问题的解决方法

其实这并不是DEDEcms解压出错,而是因为DEDECwww.cppcns.comMS排列图标顺序是按解压时间的前后来排列的,知道了原因,我们只要改变DEDECMSwww.cppcns.com默认的排列规则就可以解决这个问题了。大家可以看到
2022-06-12

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录