Отправка файла> 1 МБ с использованием HTTP POST - PullRequest
2 голосов
/ 17 марта 2012

Я отправляю видео- и аудиофайлы из приложения Android на Wampserver, некоторые из них могут быть довольно большими, и у меня возникает проблема OutofMemory, когда размер файла превышает 1MB.

Я конвертирую каждый файл отдельно в поток байтов. Я думаю, что поток байтов слишком велик, поэтому OutofMemory.

Как я могу предотвратить возникновение этой ошибки?

Ответы [ 3 ]

3 голосов
/ 18 марта 2012

Используя ссылку, предложенную Maxium здесь:

Загрузка файлов на HTTP-сервер с помощью POST на Android.

Затем я нашел это Ошибка нехватки памяти в Android , чтобы исправить ошибку.

Заменить:

while (bytesRead > 0)
{
    outputStream.write(buffer, 0, bufferSize);
    bytesAvailable = fileInputStream.available();
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}

на:

while (bytesRead > 0){
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    byte byt[]=new byte[bufferSize];
    fileInputStream.read(byt);
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
    outputStream.write(buffer, 0, bufferSize);
}
3 голосов
/ 17 марта 2012
0 голосов
/ 17 марта 2012

Если у вас есть большой размер данных, таких как большой файл или большое изображение / изображение хорошего качества, для отправки на сервер, вы можете отправить их по частям / кусками.

Сначала установите соединение Http с сервером, а затем отправьте куски с классом DataOutputStream. На стороне сервера также необходимо реализовать код для получения этих чанков и объединить их в один файл после получения всех чанков.

...