2013-07-26 5 views
2

특정 바이트 길이에서 다운로드를 시작하는 android에 분산 다운로드 관리자를 구현하고 싶습니다. 따라서이 방법으로 파일의 일부를 http 요청의 처음부터 끝까지 다운로드하는 대신 다운로드 할 수 있습니다.특정 바이트에서 다운로드 시작

혁신적인 점은 없지만 그 방법을 모르겠습니다. (bitorrent도 아니다)

java http apache 라이브러리에서 서버로부터 파일의 길이를 얻은 다음 파일 중간에서 다운로드를 시작하는 방법은 무엇입니까? HttpClient를 가진

+0

주제가 다를 수 있지만 다운로드 관리자를 직접 구현하려는 이유는 무엇입니까? 이미 다양한 솔루션이 존재합니다. – jsalonen

+1

http://stackoverflow.com/questions/14423108/pause-resume-http-connection-download –

+0

@jsalonen 새로운 프로토콜에 대한 개념 증명, 행운을 빕니다. – CQM

답변

1

는 :

mHttpGetHttpGet의 인스턴스
if (offset > 0) { 
    String startFrom = "bytes= " + offset + "-"; 
    if (expected >= 0) { 
     startFrom += expected; 
    } 
    mHttpGet.addHeader("Range", startFrom); 
    expectedStatusCode = HttpStatus.SC_PARTIAL_CONTENT; 
} 

, offset 당신이 이미 다운로드 한 바이트 수이고 expected는 파일의 크기입니다. HttpGet 헤더의 범위 필드에 대한

: 카일이 질문에 댓글로

Request only part of an entity. Bytes are numbered from 0. 
+1

이 작업을 수행하는 데 대한주의 사항이 있습니다. ? 어떤 종류의 서버/프로토콜이 특정 바이트에서 다운로드를 시작할 수 없는지. 또한, 내가 오프셋에 대해 가정을하기 전에 알아야하기 때문에 요청의 바이트 길이를 얻는 방법 – CQM

+0

instace의 경우 부분 파일을 저장하는 경우 오프셋은 저장된 바이트 수 – Blackbelt

1

, 당신은 밖으로 this answer

기본 원칙 확인할 수는 그에 대한 (HTTP) 요청과 함께 머리글

"Range", "bytes="+(file_length_to_start_from) +"-" + (file_length_to_stop) 

을 추가 파일 또는 해당 지점에서 파일의 나머지 부분을 얻기 위해 (링크 된 응답 예)를 file_length_to_stop를 생략 할 수 있습니다 에.