Android 使用 okhttp3和retrofit2 进行单文件和多文件上传

2023-11-09

 

目录

前言

一、单文件上传

二、多文件上传

总结



 

前言

 开发项目中需要进行单文件多文件的上传功能,下面演示的ApiResponse是自己分装的返回值,要根据自己的项目来完成。使用的mvvm框架,kotlin协程。

看下大体思路和传参形式,仅供参考


 

一、单文件上传

 1、apiService中

     @Multipart
    @POST("xxxx/xxx")
    suspend fun upload(
        @Part part: MultipartBody.Part,
        @Query("code") code: String
    ): ApiResponse<String>

2、acivity代码

  val file = File(it)
  val requestBody: RequestBody = RequestBody.create(MediaType.parse("image/*"), file)

  val part = MultipartBody.Part.createFormData("file", file.getName(), requestBody)

  mViewModel.upload(part)

二、多文件上传

 1、apiservice中

    @POST("xxx/xxxxs")
    suspend fun uploads(
        @Body part: MultipartBody,
        @Query("code") code: String
    ): ApiResponse<String>

2、acivity代码

      val builder = MultipartBody.Builder()
            builder.setType(MultipartBody.FORM)
             getDataList()?.filter { !it.filePath.isNullOrEmpty() }.forEach {
                val file = File(it.filePath)
                builder.addFormDataPart(
                    "files",
                    file.getName(),
                    RequestBody.create(MediaType.parse("image/jpg"), file)
                )
            }

            mViewModel.uploads(builder.build())


总结

 记录总结,要根据自己的框架进行参考改造。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 使用 okhttp3和retrofit2 进行单文件和多文件上传 的相关文章

  • 通过硬件按钮启动 Android 应用程序

    我希望构建一个在单击特定硬件按钮时启动的 Android 应用程序 例如 当我按下音量增大按钮 30 秒时 应用程序必须在不增加音量的情况下启动 我想知道这可能吗 你可以定义一个BroadcastReceiver处理ACTION MEDIA
  • Google Map Android API v2 无法在 Play 商店应用程序中显示地图

    我正在与Google Map Android API v2在 Android 应用程序中 它可以很好地与未签名的应用程序在不同的设备上 但是 当我签署 apk 并将应用程序上传到 Play 商店时 下载的应用程序显示白屏而不是地图 您使用什
  • 如何从 Java 中的 String 获取类引用?

    如果我需要返回一个基于字符串实例化的类 例如 从 JSON 创建逻辑 应该如何编写 我最初的想法是一个 switch 但在 Android 框架的 Java 版本中 看起来 switch 语句不允许使用字符串 接下来的想法是 HashMap
  • 我可以为 Android Activity 分配“默认”OnClickListener() 吗?

    我有一个 Activity 对于布局中的每个小部件 我调用 setOnClickListener 来分配我的 OnClick 处理程序 在我的 OnClick 处理程序中 我使用 switch 语句根据 View 参数的 ID 为每个按钮执
  • 在 Java/Android 中检查字符串是否包含 URL 的最佳方法是什么?

    在 Java Android 中检查字符串是否包含 URL 的最佳方法是什么 最好的方法是检查字符串是否包含 com net org info 其他 或者有更好的方法吗 url 输入到 Android 中的 EditText 中 它可以是粘
  • 如何在 PercentRelativeLayout 中使用layout_aspectRatio?

    我尝试在视图上实现 16 9 的纵横比PercentRelativeLayout https developer android com reference android support percent PercentRelativeLa
  • 我无法从 Android 模拟器中删除日语 IME

    我已经多次看到这个问题 但答案总是 从 语言和键盘设置 菜单中取消选中 IME 问题是那里没有复选框 选择菜单 自定义区域设置 en US 菜单 设置 语言和键盘 选择语言 选择 英语 美国 菜单 设置 语言和键盘 日语输入法是唯一的输入法
  • 显示葡萄牙语字符 Android

    我正在开发一个 Android 应用程序 当它应该写 n o 或 cabe a 等单词 例如带有 或 的字符 时 它会写 或 我已经检查过源文件编码 它是UTF 8 看起来 UTF8 被解释为 ISO 8859 x 理论上 你可以提供 ja
  • 删除所有(子)片段的正确方法

    我在父级片段线性布局 fragmentContainer 中动态加载一堆子级片段 然后当用户单击按钮时 我需要将它们全部删除并添加新的 我不知道每次会添加多少碎片 这是我一次性删除所有碎片的方法 LinearLayout ll Linear
  • 在 Android 上使用 Fluidsynth 从 SoundFonts 播放音符

    有没有办法让android通过使用FluidSynth使用SoundFont文件播放声音 我一直在看jOrgan http sourceforge net apps mediawiki jorgan index php title Deve
  • 这个错误从何而来?错误:com.facebook.FacebookException:无法获取应用程序名称

    我无法弄清楚这一点 我已将我的密钥哈希和所有内容添加到 Facebook 网页 但我无法找出此错误 11 12 19 51 27 744 D HelloFacebook 5188 Error com facebook FacebookExc
  • 如何在Android项目中使用libffmpeg.so?

    我正在尝试在 Android 中创建一个屏幕录制应用程序 为此 我使用 FFmpeg 我已经创建了 libffmpeg so 文件 现在我想在 Android 项目中使用相同的方法来调用它的本机函数 我怎样才能做到这一点 本教程提供了有关此
  • 如何使用android ndk r9b为Android编译FFMPEG

    我想设计一个Android应用程序 可以通过FFMPEG命令播放和编辑视频 但我不知道如何在Android上使用FFMPEG 我尝试过从Google搜索到的许多方法 但它们太旧了 无法实现 现在 FFMPEG的最新版本是2 1 1 Andr
  • Kotlin 中的枚举类对于 Android 来说是否像 Java 中那样“昂贵”?

    Are EnumKotlin 中的类对于 Android 来说 昂贵 就像 Java 一样 还可以用吗 IntDefs or StringDefs在科特林 当我将 Kotlin Enum 类反编译为 Java 类时 底层仍然使用了 Java
  • 如何在打开导航抽屉时使背景 Activity 变小?

    我想做我的背景Activity打开时稍微小一点Navigation Drawer 模拟存在的效果Airbnb应用 我想最好的解释是截图 但重点不是让 View 变小 而是让它成为与 Drawer 打开 关闭动画同步的动画 因此 如果您开始打
  • Android Studio 1.0 在 dexDebug 或 dexRelease 上构建失败

    我最近从 Android Studio 0 9 2 升级到 1 0 包括 Gradle 插件版本 1 0 0 并且在构建项目时遇到问题 每当我构建时 我都会在 dexDebug 或 dexRelease 步骤中收到以下异常 UNEXPECT
  • SWIG C 函数指针和 JAVA

    我有一些 C 代码 其中一个方法有一个函数指针作为参数 我正在尝试在我的 Android 应用程序中使用 C 代码 我决定使用 SWIG 来完成生成我需要的 java 文件的所有工作 一切都适用于常规函数 没有函数指针作为参数的函数 但我不
  • 如何创建克隆重复视图?

    在我的 Android 应用程序中 我想创建重复的ImageButton已经创建的Imagebutton 我想创造新的Imagebutton以编程方式与 XML 文件中已创建的按钮具有相同的宽度 高度 背景 图像源 边距等 简而言之 我想创
  • Android Wear Overlay 传递触摸事件

    我有一个 Android Wear 应用程序 其中我使用透明的覆盖视图来接收触摸事件 我需要能够接收屏幕上任何位置发生的所有触摸事件 并且还能够看到它们的坐标 我发现的所有研究都表明我无法接收所有触摸事件并将其传递 然而 and 都在做这样
  • 如何在给定的纬度和经度处使用标记/覆盖项目启动地图意图?

    我有一个纬度和经度 我想打开以该点为中心的谷歌地图 所以我使用以下代码 Intent intent new Intent android content Intent ACTION VIEW Uri parse geo lat lng st

随机推荐

  • selenium用法详解【从入门到实战】【Python爬虫】【4万字】

    跳转文末 获取实战源码与作者联系方式 共同学习进步 文章目录 简介 selenium安装 安装浏览器驱动 确定浏览器版本 下载驱动 定位页面元素 打开指定页面 id 定位 name 定位 class 定位 tag 定位 xpath 定位 c
  • 2023年工业信息安全技能大赛—岗位技能锦标赛通知

    点击星标 即时接收最新推文 一 锦标赛背景 为加速推进数字化 智能化 5G 大数据等新一代信息技术与制造业深度融合 提升工业信息安全行业学习人员的技能水平 结合装备制造产业发展需要 促进装备制造产业高质量发展 加快培养工业信息安全技能人才
  • SM.MS图床api调用

    第一步 注册sm ms账号 并获取API Access 第二步 HTML结构 我用的是vue
  • upload-labs大详解

    pass1 上传一个php一句话文件 记得改成php格式 发现不允许上传php类型的 只能上传jpg gif pngl的我们打算用burp抓包 先上传jpg的 然后用burp改成php的 放包后 找到它的存储位置 用蚁剑连接 成功连接 pa
  • python基础笔记(二)_pandas的基础语法

    数据分析工具包 Pandas 基础序列 一维数组 Series Series 是带有标签的一维数组 可以保存任何数据类型 轴标签统称为索引 index查看series索引 类型为rangeindex values查看series值 类型是n
  • Mysql之一行转多行(列转行)--- help_topic

    用到的知识点 substring index str delim count str 要处理的字符串 delim 分隔符 count 计数 例子 str www wikibt com substring index str 1 结果是 ww
  • Java实现比较APP版本号大小

    实现代码如下 比较APP版本号的大小 p 1 前者大则返回一个正数 2 后者大返回一个负数 3 相等则返回0 param version1 app版本号 param version2 app版本号 return int public sta
  • 如何利用ChatGPT写毕业论文

    如何利用ChatGPT写毕业论文 ChatGPT是什么 利用ChatGPT写毕业论文的步骤 1 准备数据 2 训练模型 3 生成论文 4 检查论文 总结 地址 ChatGPT是什么 ChatGPT是一个基于GPT 2模型的开源聊天机器人 它
  • Fabric开发(三)ubuntu下启动Fabric2.2.0网络,并测试一个Fabcar的demo

    前面几章内容 我们已经详细讲解过fabric 1 4 3网络搭建 fabric2 2 0本地编译 今天 我们在fabria2 2 0版本中 启动一个网络 并用SDK调用一个fabcar 的demo 体验一下fabric新版本 我们今天用No
  • 华为云AI视觉开发平台--HiLens使用中如何导入(转换)模型?

    HiLens是华为云的端云协同多模态AI开发应用平台 提供简单易用的开发框架 开箱即用的开发环境 丰富的AI技能市场和云上管理平台 对接多种端侧计算设备 支持视觉及听觉AI应用开发 AI应用在线部署 海量设备管理等 华为HiLens由AI推
  • 玩转Mixly – 9、Arduino AVR编程 之 函数

    以下内容源自Mixly官方技术文档 https mixly readthedocs io zh CN latest Arduino AVR 08Functions html 函数 在函数部分 主要分为定义函数和执行函数 需注意 当用户自定义
  • PHP自学教程之PHP加密函数

    数据加密的基本原理就是对原来的明文的文件或数据按某种算法进行处理 使其成为不可读的一定代码 通常称为 密文 通过这样的途径来达到保护数据不被非法窃取和阅读目的 PHP加密的函数主要有 crypt md5 和sha1 函数 还有加密的拓展库M
  • REDIS09_LBS出现背景、GEO算法介绍、算法步骤、剖析、邻近网格位置推算

    文章目录 LBS出现的背景 重新认识经纬度 感性认识GeoHash Geohash算法介绍 Geohash算法步骤 更深入剖析GeoHash 邻近网格位置推算 LBS出现的背景 移动互联网时代LBS应用越来越多 所在位置附近三公里的药店 交
  • Spring Boot + Spring Cloud + Spring Cloud Alibaba 版本对照表

    Json 详细数据 Spring Cloud 版本对应文档 Spring Cloud Alibaba 版本对应文档 spring cloud dependencies 版本 spring cloud 版本 spring boot 版本 sp
  • 4,使用 OpenCV 进行边缘检测

    效果微信扫码查看 原图 sobel X sobel Y sobel XY canny边缘检测 边缘检测是一种图像处理技术 用于识别对象的边界 边缘 或图像内的区域 边缘是与图像相关的最重要的特征之一 我们通过图像的边缘了解图像的底层结构 因
  • 第1组 团队展示

    1 组长博客链接 组长博客 2 团队项目描述 借呗 想借就借无需等待的资源管理平台 3 队员风采 林睿 风格 日常迷糊 喜欢慵懒随性 擅长的技术 还没有可以说得上擅长的技术 会基础的c和c 一点点python 编程的兴趣 想好好学pytho
  • 今日头条最新signature

    最新今日头条sign加密更新了 抽时间看了看 比上次的加密难度增加了许多 接下来讲下加密流程 今日头条获取下一页面的数据时断点位置 我们只需要找到window byted acrawler的生成就可以了 用fiddler拦击服务器返回的的r
  • Sortablejs实现vue项目表格拖动排序

    1 简介 Sortable js是一款优秀的js拖拽库 支持ie9及以上版本ie浏览器和现代浏览器 也可以运行在移动触摸设备中 不依赖jQuery 支持 Meteor AngularJS React Vue Knockout框架和任何CSS
  • Tomcat 9 免安装版 配置教程

    1 首先进入到https tomcat apache org 下载对应版本的TomCat 的 zip 包 解压到PC某个文件夹中 2 进入到目录 解压路径 bin 下 如我的路径参考 D Tomcat apache tomcat 9 0 6
  • Android 使用 okhttp3和retrofit2 进行单文件和多文件上传

    目录 前言 一 单文件上传 二 多文件上传 总结 前言 开发项目中需要进行单文件多文件的上传功能 下面演示的ApiResponse是自己分装的返回值 要根据自己的项目来完成 使用的mvvm框架 kotlin协程 看下大体思路和传参形式 仅供