На стороне клиента (то есть с помощью javascript) нет способа сделать это, поэтому ответом на ваш вопрос будет: «Вы не можете»
На стороне сервера я бы сказал, что вы могли бы, если бы вы передавали вывод клиенту и имели какой-то обратный вызов в конце. Это должно быть сделано на стороне сервера.
В псевдокоде:
page.language:
myFile = "/thing.zip"
while !eof
send a part of the file to the client
keep track of this
send to database "it's downloading at x%"
end
send to database "ok it's downloaded"
Это зависит от вашей серверной технологии, и я не уверен, что PHP обрабатывает что-то подобное. Я сделал нечто подобное, используя .NET, и он работал нормально ... это была хитрая мысль, поэтому убедитесь, что это стоит сделать