У меня есть система, которая загружается в файл сервера по файлу и отображает индикатор выполнения процесса загрузки файлов, а затем под второй индикатор выполнения, который я хочу указать в процентах от партии все файлы в очереди для загрузки.Рассчитать общий процент передачи пакетной загрузки с ограниченной информацией
Информация и алгоритмы я могу работать, являются:
Bytes Sent/Total Bytes Для отправки = Первый прогресс бар
Это прекрасно работает (например, 512KB от 1024 Кб (50%).). Предположим, что у меня осталось еще два файла для загрузки, но оба размера файла неизвестны (так как это известно только после того, как файл начнет загружать, после чего он будет сжат, и размер файла будет определен), как бы я пошел сделать мой третий индикатор прогресса?
Я не думал, что это будет возможно, поскольку мне понадобится «Total Bytes Sent»/«Total Bytes To Send», чтобы воспроизвести логику моего первого индикатора выполнения в более крупном масштабе, однако я получил версию рабочий: «Текущий номер файла, на котором мы находимся»/«общее количество файлов для отправки», возвращающих процент через пакет, но, очевидно, не будет инкрементно обновляться, и это довольно грубо.
Итак, подумав, что если бы я мог включить текущий файл% с этим алгоритмом, я мог бы получить правильный процент прогресса в текущей точке моей партии.
Я попробовал этот алгоритм, но увы, не такой пользы (жаль любые математические головы, это, вероятно, вполне понятно, почему он не будет работать)
("Current file number we are on"/"total number of files to send") * ("Bytes Sent"/"Total Bytes To Send")
Например, я думал, что я был на правый трек при тестировании с помощью этого примера: 2/3 (2-й из 3-го файла) = 66% (пока это правильно), но затем, когда я добавил * 0.20 (для указания только 20% второго файла загрузился), мы вернулись к 13%. Мне нужно лишь немногим более 33%! Я попробовал инверсию в 0.80 и a (2/3 * (2/3 * 0,2))
Можно ли это сделать, не зная целых байтов в пакетном режиме для загрузки?
Пожалуйста, помогите! Спасибо!
Почему вы не можете получить размеры всех файлов с самого начала? Это должно быть быстрой операцией. –
Поскольку в файле присутствует сжатие, общий размер файла неизвестен до тех пор, пока каждый файл не повторится. – GONeale