Отправка файла> 1 МБ с использованием HTTP POST

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

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

Как я могу остановить эту ошибку?

Ответы на вопрос(3)

Решение Вопроса

Загрузка файлов на 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);
}
 Neeta19 мар. 2012 г., 21:24
@ Максим Да, я исправил это. Я проголосовал за ваш ответ, потому что он частично решил мою проблему.
 Maxim20 мар. 2012 г., 15:40
Спасибо, но мне было просто любопытно, сработало ли это для вас или нет, так как у меня не было времени написать серверную часть, чтобы выяснить, почему она до сих пор не работает. Результаты не имеют значения
 Maxim19 мар. 2012 г., 13:51
Вы решили свою проблему с этим исправлением?

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

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

 Maxim22 мар. 2012 г., 15:02
Это то, для чего был изобретен TCP / IP
 Neeta17 мар. 2012 г., 00:19
Этот код разбивает файл на части или что-то? Хотя я не думаю, что это такая проблема. Я конвертирую каждый файл индивидуально в поток байтов. Я думаю, что поток байтов слишком велик, поэтому OutofMemory ..
 Walter K17 мар. 2012 г., 00:34
Хорошая ссылка с кодом, спасибо, Максим.
 Neeta17 мар. 2012 г., 16:10
Это работает для файлов размером более 1 МБ, но теперь у меня возникают проблемы с отправкой файла размером более 7 МБ. Я снова получаю проблему OutOfMemory ..
 Maxim17 мар. 2012 г., 00:32
Если вы покажете фрагмент кода, который действительно загружает, вам будет легче угадать, что там не так.
 Maxim17 мар. 2012 г., 00:24
Это дает OutputStream соединения и читает файл в поток. outputStream = new DataOutputStream (connection.getOutputStream (); Сервер должен записать этот поток куда-нибудь. Если вы читаете файл на 1024 байта, он никогда не займет больше памяти, чем 1K. Создайте maxBufferSize = 4096. Когда вы открываете файл для потоковой передачи, он не не загружается в память

Ваш ответ на вопрос