Позвольте мне поделиться некоторым кодом, который я реализовал для отправки файла изображения в запросе.
Ниже приведена моя функция запроса API:
@Multipart
@POST("api/order/order_create")
fun createOrder(
@Header("Authorization") authorization: String?,
@Part("category_id") categoryId: RequestBody?,
@Part("size") size: RequestBody?,
@Part("narration") narration: RequestBody?,
@Part("ref_picture") file: RequestBody?
): Call<OrderCreateResponse>
Ниже приведен код, где я вызываю API, отправив необходимые параметры:
var fbody = RequestBody.create(MediaType.parse("image/*"), imageFile)
var size = RequestBody.create(MediaType.parse("text/plain"), et_custom_order_size.text.toString())
var catId = RequestBody.create(MediaType.parse("text/plain"), selectedID.toString())
var narration = RequestBody.create(MediaType.parse("text/plain"),et_custom_order_narration.text.toString())
val orderCreateAPI = apiService!!.createOrder(complexPreferences?.getPref("token", null), catId,size,narration,fbody)
Здесь imageFile
imageFile = File(Global.getRealPathFromURI(activity!!, imageUri!!))
Используя функцию ниже, чтобы получить реальный путь,
fun getRealPathFromURI(context: Context, contentUri: Uri): String {
var cursor: Cursor? = null
try {
val proj = arrayOf(MediaStore.Images.Media.DATA)
cursor = context.contentResolver.query(contentUri, proj, null, null, null)
val column_index = cursor!!.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
cursor.moveToFirst()
return cursor.getString(column_index)
} catch (e: Exception) {
Log.e(TAG, "getRealPathFromURI Exception : " + e.toString())
return ""
} finally {
if (cursor != null) {
cursor.close()
}
}
}
Отправляя изображение вышеуказанным способом, я не могу его отправить!Пожалуйста, ведите меня с тем же.Заранее спасибо.