当前位置 : 主页 > 手机开发 > android >

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

来源:互联网 收集:自由互联 发布时间:2023-02-01
目录 前言 一、单文件上传 1、apiService中 2、acivity代码 二、多文件上传 1、apiservice中 2、acivity代码 总结 前言 开发项目中需要进行单文件多文件的上传功能,下面演示的ApiResponse是自己
目录
  • 前言
  • 一、单文件上传
    • 1、apiService中
    • 2、acivity代码
  • 二、多文件上传
    •  1、apiservice中
    • 2、acivity代码
  • 总结

    前言

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

    总结

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

    到此这篇关于Android 使用 okhttp3和retrofit2 进行单文件和多文件上传的文章就介绍到这了,更多相关Android 单文件和多文件上传内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

    上一篇:KotlinList与Set和Map实例讲解
    下一篇:没有了
    网友评论