android - 如何使用 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
解决方案
这就是我在 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()
}
}
推荐阅读
- excel - Copy all formulas when inserting new row in Excel worksheet
- html - CSS - 选择一行中的每个最后一项并应用边距
- android - 如何在 Kotlin 中使用 Fuel 和协程?
- apache - Why Apache HTTPD is concatenating websocket url in rewrite engine?
- python - 由于使用python的段落中的连字符,如何通过删除连字符“-”来恢复拆分的单词
- reactjs - 使用 props 在父子组件之间进行 React js 通信,将数据从商店发送到产品详细信息组件
- r - 在 R 控制台中打印 Fortran write(*,*)
- c++ - 光仅在 2D 网格的一侧反射,在 Qt3D 中禁用剔除
- javascript - 在移动设备上显示内容并在桌面设备上隐藏
- ballerina - 在芭蕾舞演员中减去两个时间值