You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.0 KiB
46 lines
1.0 KiB
package com.example.dattingapp.registration
|
|
|
|
|
|
import android.content.Context
|
|
import android.net.Uri
|
|
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
|
import okhttp3.MultipartBody
|
|
import okhttp3.RequestBody.Companion.asRequestBody
|
|
import java.io.File
|
|
|
|
fun uriToMultipart(
|
|
context: Context,
|
|
uri: Uri,
|
|
fieldName: String,
|
|
fileName: String
|
|
): MultipartBody.Part {
|
|
|
|
val inputStream = context.contentResolver.openInputStream(uri)
|
|
?: throw Exception("Cannot open selected file")
|
|
|
|
val tempFile = File(
|
|
context.cacheDir,
|
|
fileName
|
|
)
|
|
|
|
inputStream.use { input ->
|
|
tempFile.outputStream().use { output ->
|
|
input.copyTo(output)
|
|
}
|
|
}
|
|
|
|
val mimeType =
|
|
context.contentResolver.getType(uri)
|
|
?: "application/octet-stream"
|
|
|
|
val requestBody =
|
|
tempFile.asRequestBody(
|
|
mimeType.toMediaTypeOrNull()
|
|
)
|
|
|
|
return MultipartBody.Part.createFormData(
|
|
fieldName,
|
|
tempFile.name,
|
|
requestBody
|
|
)
|
|
}
|
|
|