У меня есть приложение, в котором пользователь выбирает pdf из проводника, а затем мне нужно преобразовать этот pdf в base 64.
Ниже приведен мой код для преобразования pdf в base64
private fun convertImageFileToBase64(imageFile: File?): String {
return FileInputStream(imageFile).use { inputStream ->
ByteArrayOutputStream().use { outputStream ->
Base64OutputStream(outputStream, Base64.DEFAULT).use { base64FilterStream ->
inputStream.copyTo(base64FilterStream)
base64FilterStream.flush()
outputStream.toString()
}
}
}
}
поэтому в onActivityResult
, где я получаю pdf-файл, я пишу следующий код
launch {
withContext(Dispatchers.IO) {
generatedBase64 = convertImageFileToBase64(file)
}
//upload generatedBase64 to server
}
Но код выполняется в основном потоке, а не в фоновом потоке, и мой пользовательский интерфейс на некоторое время зависает, еслиPDF-файл большой.Я также попробовал AsyncTask и попытался выполнить преобразование в методе doInBackground
, но я столкнулся с той же проблемой