문제

웹 다운로드가 Python 또는 Wget [대형 파일의 경우]를 사용하여 다운로드하기 위해 성공적으로 완료되었음을 확인하는 쉽고 신뢰할 수있는 방법이 있습니까? 다른 작업을 수행하기 전에 파일을 전체적으로 다운로드하고 싶습니다.

도움이 되었습니까?

해결책

많은 (실제로는, 나는 대부분의 경우, HTTP/1.1 헤더 섹션을 감안할 때, 당신은 엔티티 본문의 시간에 대한 기대를 얻을 수 있습니다. 그 기대가 있다면 모든 엔티티 데이터를 얻었는지 결정할 수 있습니다. 보다 RFC 2616 섹션 4.4 자세한 내용은 본질적으로 :

  • 때때로 content-length 엔티티 본체의 길이를 정확하게 반영합니다
  • 때로는 응답 코드에 따라 또는 응답이 HEAD 요구
  • 때로는 요청이 전송되기도합니다. 그리고 HTTP 데이터에는 '지금 끝났다'고 말하는 마커가 있습니다.Transfer-Encoding: chunked)
  • 그리고 때로는 연결이 닫히면 공식적으로 메시지가 수행됩니다 (이 경우 모든 것을 얻는 것과 일찍 끊어지는 것을 구별 할 수 없습니다).

마지막 경우 모든 경우에, 당신은 당신이 모든 것을 가지고 있는지 여부를 알 수 있습니다. 특히 도구 (WGET 또는 기존 Python 라이브러리)가 귀하의 응답이 잘리지 않았거나 잘리지 않았다는 신호를 쉽게 해석 할 수있는 신호를 제공하는지 모르겠습니다.

다른 팁

HTTP는이를 확인하는 방법을 제공하지 않습니다.

큰 파일을 배포 할 때 사용되는 방식은 다운로드 후 파일의 MD5SUM을 계산하고 서버가 제공 한 MD5SUM과 비교하는 것입니다.

예를 들어, Ubuntu가 CD 다운로드를 배포하고 확인하는 방식입니다. https://help.ubuntu.com/community/howtomd5sum

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top