2012-11-24 3 views
1

나는 Ajax를 통해 파일을 업로드하고 있습니다. 현재, 각 청크의 무게는 50 KiB입니다. 나는 다음과 같은 정보가 업로드 과정에서 남은 다운로드 시간을 계산하십시오.

:
  • 시간
  • 을 시작 덩어리의

    • 파일 크기
    • 금액은 MS의 현재 덩어리를 업로드하는 데 걸린 얼마나

    이 작업을 완료하는 데 필요한 모든 것을 추가 할 수도 있습니다. 내가 생각한 것은 업로드에 의존하지 말아야한다는 것입니다. 속도 만이 내 현재의 깨진 공식은 평균 청크 업로드 시간에 의존하는 :

    (averageUplTime * ((FileSize/ChunkSize)) - AmountOfChunks)/1000 
    
    그것은 실제로 거의, 나는 거의 올바른 방법으로 감소 있다는 것을 숫자 사이에 볼 수 있습니다,하지만 난이 긴 숫자를 얻을 작동

    9.16174 및이 올바른 방법을 알아낼 수 없습니다. startTime 가정

  • +2

    무엇이 문제입니까? 반올림 된 숫자 만 원하니? – MikeSmithDev

    +0

    @MikeSmithDev 아니요 수식이 틀립니다. 더 좋은 것을 찾을 수 있기를 바랍니다. – Linas

    답변

    4

    이 시대 이후 밀리 초 단위로 시간 소인이 작동합니다 :

    var elapsedTime = (new Date().getTime()) - startTime; 
    var chunksPerTime = currentChunk/elapsedTime; 
    var estimatedTotalTime = amountOfChunks/chunksPerTime; 
    var timeLeftInSeconds = (estimatedTotalTime - elapsedTime)/1000; 
    
    var withOneDecimalPlace = Math.round(timeLeftInSeconds * 10)/10; 
    

    업로드 속도가 매우 변동하지 않는 한이 한 전용 "정확한"입니다. 마지막 X 청크가 chunksPerTime (그리고 이들의 마지막 Y 값에 대해 평균)을 계산할 때만 더 나은 결과를 얻을 수 있습니다.

    +0

    감사합니다. 99 % 정확합니다! 나는이 4 시간 동안 일하고 있었다 : D – Linas

    +0

    @Linas 당신을 환영한다. 이것이 정확히 작동하는 이유가 불분명하면 그냥 물어보십시오. – phant0m

    관련 문제