Я думаю, мне нужно читать и преобразовывать байты потока в блоки типа 8 КБ для обработки, но я не могу найти ни одного примера Kotlin. о том, как это сделать, поскольку я не могу просто преобразовать блоки в base64 и объединить их. Это не работает для base64 из-за кодировки.
Я думаю, мне нужен какой-то поточный кодировщик base64, и я не могу найти для этого никакого решения, которое у меня работает. Код JAVA, который я могу найти здесь, в StackOverflow, я не могу преобразовать в Kotlin, поскольку я новичок в Kotlin и Java в целом
Кроме того, я читаю двоичные файлы данные и не могу использовать ни одну функцию lineReader, которую я нахожу повсюду. Она должна работать с блоками заданного размера в байтах.
Это функция, которая используется в настоящее время. происходит сбой, если размер файла превышает 20 МБ:
Код: Выделить всё
private fun pushAttachmentToJS(uri: Uri) {
try {
val inputStream = contentResolver.openInputStream(uri)
inputStream.use { stream ->
// Next two lines need a replacement working in blocks
val fileBytes = stream?.readBytes()
val fB64 = Base64.encodeToString(fileBytes, Base64.NO_WRAP) //
Подробнее здесь: [url]https://stackoverflow.com/questions/79199797/kotlin-convert-binary-inputstream-to-base64-string-in-blocks-buffered[/url]
Мобильная версия