首页 > 解决方案 > 如何使用 kotlin 协程上传文件(改造)

问题描述

如何使用 kotlin 协程(改造)上传文件。

我是否可以使用与此类似的语法将文件发送到服务器?当前的分段上传似乎需要大量额外的代码来创建 MultipartBody.body 并发送到服务器。有什么相同的原因吗?

我正在尝试的代码语法。

data class AddCategoryRequest(
    val name: String,
    val image: File?,
    val subCategory: Boolean,
    val parentCategoryId: Int
)

/**
  * Category Create API Call
  */
@POST(Urls.SUB_URL_CREATE_CATEGORY)
suspend fun createCategory(
    @Body createCategoryRequest: AddCategoryRequest
): Category

标签: androidkotlinretrofitretrofit2kotlin-coroutines

解决方案


这就是我在 Kotlin 中使用 Retrofit + Coroutines 上传文件的方式:

@PUT("")
suspend fun uploadFile(@Url url: String, @Body body: RequestBody)

并这样称呼它:

private suspend fun uploadFile(
    localFileEntry: LocalFileEntry,
    file: File
) {
    val requestBody: RequestBody =
        file.asRequestBody("image/jpeg".toMediaTypeOrNull())
    kotlin.runCatching {
        apiInterface.uploadFile(fileUploadInfo.url, requestBody)
    }.onFailure {
        it.printStackTrace()
    }
}

推荐阅读