Я пытаюсь преобразовать файлы в строку Base64. Для файла небольшого размера он отлично работает, для файлов размером более 500 МБ он выдает OutOfMemoryError. Я должен преобразовать файл в Base64 encodedString, потому что это требование моей стороны на сервере для загрузки файла через кодировку Base64. можно ли преобразовать и отправить файл 500mb с помощью этого метода? Заранее спасибо.Преобразование байт [] в Base64 String throws OutOfMemoryError
byte[] bytes = null;
InputStream inputStream;
try {
inputStream = new FileInputStream(mFilepath);
byte[] buffer = new byte[1024];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
while ((bytesRead = inputStream.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
inputStream.close();
output.flush();
output.close();
} catch (IOException e) {
e.printStackTrace();
}
bytes = output.toByteArray();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
// Here it throws OutOfMemoryError
String encodedString = Base64.encodeToString(bytes, Base64.DEFAULT);
Тогда я передаю encodedString
к серверу с помощью HttpURLConnection.
Возможно, это поможет http://stackoverflow.com/questions/9630430/upload-large-file-in-android-without-outofmemory-error – Emil