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

作者:_MWY 时间:2023-04-29 07:33:22 

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

前言

开发项目中需要进行单文件多文件的上传功能,下面演示的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())

来源:https://blog.csdn.net/weixin_41620505/article/details/127534431

标签:android,okhttp3,retrofit2,文件上传
0
投稿

猜你喜欢

  • Java Socket编程(三) 服务器Sockets

    2023-05-24 21:18:19
  • 关于RedisTemplate之opsForValue的使用说明

    2023-07-09 16:53:04
  • 一篇文章看懂Java字符串操作

    2023-07-17 02:29:44
  • Android入门之实现手工发送一个BroadCast

    2023-08-10 13:54:16
  • Java List的remove()方法踩坑

    2021-05-27 05:17:58
  • IDEA+Maven搭建Spring环境的详细教程

    2023-11-25 07:50:34
  • Android开发登陆案例

    2022-03-19 10:13:01
  • java字符串相似度算法

    2023-11-26 12:33:25
  • C#根据反射和特性实现ORM映射实例分析

    2023-03-29 11:52:52
  • internal修饰符探索kotlin可见性控制详解

    2023-03-09 10:15:22
  • 关于java中构造函数的一些知识详解

    2023-11-27 22:09:11
  • MyBatis注解式开发映射语句详解

    2023-06-07 20:31:23
  • spring中的注解事务演示和添加步骤详情

    2023-03-03 08:32:48
  • 如何利用java控制鼠标操作一些重复的事情

    2021-11-12 12:54:02
  • 详解SpringBoot如何实现统一后端返回格式

    2022-11-27 05:26:24
  • SpringBoot整合Redisson实现分布式锁

    2021-08-01 12:04:35
  • Java的Comparable,Comparator和Cloneable三大接口详解

    2023-07-14 11:18:48
  • c#实现汉诺塔问题示例

    2023-08-09 13:20:02
  • Spring学习教程之AOP模块的概述

    2022-06-04 00:17:13
  • Android自定义控件实现圆形进度条

    2023-02-02 05:01:59
  • asp之家 软件编程 m.aspxhome.com