У меня есть система, которая загружает на сервер файл по файлу и отображает индикатор хода выполнения при загрузке файла, а затем под вторым индикатором выполнения, который я хочу указать, процент выполнения пакета по всем файлам, находящимся в очереди на загрузку.
Информация и алгоритмы, которые я могу выработать:
Отправлено байт / Всего отправлено байт = Первый индикатор выполнения (например, 512 КБ из 1024 КБ (50%))
Это отлично работает.
Однако предположим, что у меня осталось еще два файла для загрузки, но оба размера файлов неизвестны (так как это известно только после того, как файл собирается начать загрузку, после чего он сжимается и размер файла определяется), как мне поступить? мой третий индикатор выполнения?
Я не думал, что это будет возможно, так как мне понадобится «Всего отправлено байт» / «Всего байт для отправки», чтобы воспроизвести логику моего первого индикатора выполнения в большем масштабе, однако я получил работающую версию :
«Текущий номер файла, на котором мы находимся» / «общее количество отправляемых файлов», возвращающий процент в пакете, однако, очевидно, он не будет обновляться постепенно, и это довольно сыро.
Итак, подумав, я подумал, что если бы я мог включить текущий файл% с этим алгоритмом, я мог бы получить правильный процент прогресса от текущей точки моей партии.
Я попробовал этот алгоритм, но, увы, безрезультатно (извините за любые математические заголовки, возможно, совершенно очевидно, почему он не будет работать)
("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 % 2-го файла загружено) мы вернулись к 13%. Что мне нужно, это чуть более 33%! Я попробовал инверсию в 0,80 и (2/3 * (2/3 * 0,2))
Можно ли это сделать, не зная целых байтов в пакете для загрузки?
Пожалуйста, помогите! Спасибо!