欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

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

来源: 开发者 投稿于  被查看 26117 次 评论:169

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


目录
  • 前言
  • 一、单文件上传
    • 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 单文件和多文件上传内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • Android使用 Retrofit 2.X 上传多文件和多表单示例
    • 基于标准http实现Android多文件上传
    • Android中Okhttp3实现上传多张图片同时传递参数
    • Android Retrofit实现多图片/文件、图文上传功能

    用户评论