Я занимаюсь разработкой приложения для Android, в котором мне нужно сохранить растровое изображение на удаленном сервере.Шаги:
Шаг 1: Преобразование растрового изображения в байтовый массив и отправка его из приложения Android на сервер. Я отправляю растровое изображение как MultipartEntity. На стороне сервера я получаю его вметод doPost ().
Шаг 2: Сохранить байтовый массив в базе данных mysql. Битовая карта хранится как тип данных BLOB-объектов. Я могу сохранить полученный байтовый массив в базе данных mysql.
Шаг 3: Получить растровое изображение, хранящееся в виде BLOB-объекта, и отправить его обратно в приложение Android. Я могу получить BLOB-объект, преобразовать его в байтовый массив и отправить его.
MyПроблема
Проблема в том, что данные, отправленные с сервера, принимаются небольшими партиями. Длина изображения была 1380, но она получена с переменной длиной 10, 50 и 100. Когда я складываю общее количествоЯ получаю только 1345, пропуская несколько байтов данных. Я отправляю код в конец приема.
URL url = new URL( "http://10.0.2.2:8080/ServerPartProject/BlobGetter");
URLConnection yc = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); String data;
int val=0;
while((data=in.readLine())!=null){
val=val+data.length(); //The data.length is like 10,20..
}
System.out.println("Total value obtained is "+val);//val was 1345 where it should be 1380
конец отправки:
OutputStreamWriter writer = new OutputStreamWriter(response.getOutputStream());
writer.write(senddata);
Как получить его в полном объеме?