Я пытаюсь отправить файлы на сервер.Я получаю Uri, получаю inputstream
с getContentResolver().openInputStream(uri)
, а затем продолжаю читать фрагменты файла и отправлять их на сервер через несколько частей.
Это все работает нормально, пока файл, который я пытаюсь отправить, не превышает 2 ГБ.Когда файл превышает это значение, процесс работает нормально до ~ 2 ГБ, тогда результат вызова .read () будет равен -1, даже если файл далеко не полностью прочитан.
После поиска в Интернете яобнаружил, что inputstream
чтения ограничены Integer.MAX_VALUE
.Но я не нашел обходного пути для этого.Итак, я думаю, мой вопрос, есть ли какой-нибудь метод, с помощью которого я могу прочитать за 2 ГБ?
Вот упомянутый код:
InputStream is = getContentResolver().openInputStream(fileUri);
if (is != null) {
byte[] buffer;
int maxBufferSize = AppController.UPLOAD_CHUNK_SIZE;
buffer = new byte[maxBufferSize];
int fileChunk = 0;
int read;
while ((read = is.read(buffer)) != -1) {
boolean didSend = sendMultipartChunk(upFile, fileChunk, buffer);
if (didSend) {
fileChunk++;
} else {
uploadedFiles.add(new UploadableFileDTO(true));
checkIfFinished();
break;
}
}
is.close();
sendEndUpload(upFile);