2012-04-09 2 views
2

사용자가 파일을 다운로드하도록 URL을 게시 할 수있는 웹 응용 프로그램이 있습니다. 나는 libcurl을 사용하고 있으며 파일 크기 제한을 적용하기 위해 응답 Content-Length를 확인하고 있습니다. 일부 서버를 들고 멀리 계속 업로드하고 결국 모든 사용 가능한 공간을 채우고 내 서버를 질식시킬 것이라고 걱정입니다. libcurl은 크기가 Content-Length보다 큰 경우 다운로드 파일을 중단합니까?파일 크기가 Content-Length를 초과하면 libcurl이 다운로드를 중단합니까?

+0

당신은 간단한 테스트 케이스를 채우고 직접 시도 할 수 있습니다 ... 100k를 출력하는 스크립트와 50k 만 기대하는 다운로드 스크립트. –

+1

@MarcB 알았어. 나는 그것을했고 Content-Length에서 멈췄다. 여태까지는 그런대로 잘됐다. 그러나 저는 권위있는 대답에 정말로 감사 할 것입니다. 파일 크기를 확인하는 소스 링크와 같습니다. 왜냐하면 다른 헤더의 존재가 뭔가를 바꿀 수 있기 때문입니다 (모든 것). –

+0

@MarcB 게다가 나는 파일 크기보다 작은 Content-Length 헤더를 설정했기 때문에 스트리밍을 중단 한 것이 테스트 서버 (Webrick) 였을지 모른다. 그리고 libcurl은 수신을 중단하지 않았습니다. 내가 어떻게 알아야하니? –

답변

2

예 (대부분). Content-Length 필드 (사용 된 경우)는 HTTP가이 특정 응답 본문의 크기를 나타내는 데 사용되는 방법입니다. HTTP 클라이언트는 연결을 계속 열어두고 다음 요청을 위해 다시 사용하기 때문에 더 이상 읽을 수 없습니다.

이것은 기본적인 HTTP 1.1 기능이며 자세한 내용은 RFC7230에서 찾을 수 있으며 컬 코드를 읽으려면 Content-Length 헤더 일치 및 구문 분석에 대한 lib/http.c 소스 코드를 확인한 다음 추가 방법 'maxdownload'필드는 lib/transfer.c 등에 사용됩니다.

관련 문제