@Warog

Отправляю файл на сайт. Хочу видеть информацию о количестве переданных байт. Как это сделать?

Отправляю файл на облачный сервис. Хочу вывести ProgressDialog, в котором пользователю будет виден прогресс передачи файла в процентах. Передача происходит в AsyncTask doInBackground.
Файл передаю так:
byte[] buf1 = new byte[myfile.available()];
                    myfile.read(buf1);
                    myfile.close();

                    OutputStream os = urlConnection.getOutputStream();
                    os.write(buf1);
                    os.flush();
                    os.close();

                    urlConnection.getInputStream();
                    urlConnection.connect();

Может кто знает как это можно реализовать?
Заранее спасибо!
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 1
vesper-bot
@vesper-bot
Любитель файрволлов
Нужно запилить `BufferedOutputStream` от потока `urlConnection.getOutputStream()`, в него залить весь файл, потом читать его `count` и читать из входного потока соединения, в котором данные появятся при ошибках или после успешного заливания файла, в промежутках спать и обновлять прогресс задачи через `publishProgress()`. Если я правильно понимаю логику буферизованного потока, его счетчик будет отражать количество ещё не переданных в нижележащий поток байт, т.е. вначале он вырастет до максимума, потом будет падать до нуля, и потом появятся данные в потоке `urlConnection.getInputStream()`, который вообще-то не надо просто получить и выкинуть, а надо из него читать. Соответственно снаружи пишешь сам прогрессбар и логику его обновления исходя из полученного изнутри задачи счетчика.

ЗЫ код писать не буду, не настолько силен в джаве. Тут основная идея, которая в принципе от языка не зависит, но учитывает его особенности.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы