android - 如何使用 Kotlin 和正确的 RequestBody.create 方法上传最新改造版本的图像?
问题描述
我试图在这里或在这里阅读解决方案,但是当我在自己的代码上实现它时我很困惑
我在我的 gradle 上使用这个
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.4.0'
我正在尝试在 retoft 中使用此代码上传图像
interface UploadMediaAPI {
@Multipart
@POST("uploadImage")
fun uploadImage(
@Part image: MultipartBody.Part
): Call<UploadResponse>
}
并像这样使用它
val fileImagePart = MultipartBody.Part.createFormData("imageFile", file.name, RequestBody.create("image/*".toMediaTypeOrNull(), file))
val call = uploadMediaAPI.uploadImage(image = fileImagePart)
call.enqueue(object : Callback<UploadResponse> {
override fun onResponse(call: Call<UploadResponse>, response: Response<UploadResponse>) {
}
override fun onFailure(call: Call<UploadResponse>, t: Throwable) {
}
})
据说在这里,我必须使用下面的代码来更改不推荐使用的方法
val file = File("path")
file.asRequestBody("image/jpeg".toMediaTypeOrNull())
但我真的很困惑如何把这段代码放在我自己的代码中
请你帮助我好吗 ?
解决方案
你可以像这样使用它:
val file = File(FileUtil.getPath(this, <your_uri>)) // get file from uri
val requestFile = file.asRequestBody(contentResolver.getType(<your_uri>)?.toMediaTypeOrNull())
val body = MultipartBody.Part.createFormData("imageFile", file.name, requestFile)
val call = uploadMediaAPI.uploadImage(image = body)
call.enqueue(object: Callback<UploadResponse> {
override fun onResponse(call: Call<UploadResponse>, response: Response<UploadResponse>) {
}
override fun onFailure(call: Call<UploadResponse>, t: Throwable) {
}
})
欲了解更多信息,请查看此处。
推荐阅读
- python - 如何将出现的字符串拆分为单个 txt 文件?
- feature-extraction - 如何使用 Opencv 从 Harris Corner Detector 中提取关键点
- firebase - 来自远程 REST API 的 Firebase 分析?
- python-3.x - Newb python分数计数器语法问题
- javascript - Javascript - html 图片幻灯片
- swift - UIView.animate 和 CGRect 不起作用 - Swift 4
- javascript - 构建和测试中间 spiderMonkey 签入
- laravel - 如何在 Laravel 中使用多租户配置验证?
- javascript - 在jquery中动态添加复选框
- sql - 如何按日期对列进行总和