2010-04-23 5 views
26

이 질문은 cURL의 명령 줄 버전과 관련이 있습니다.cURL을 사용하여 응답 헤더 파일 이름을 사용하여 파일을 저장하는 방법

저는 CGI 스크립트에서 파일을 다운로드하려고합니다. 파일 이름이 컬은 'dl.pl?ID=2'

가 어떻게 컬을 저장하기 위해 어떻게해야합니까로 파일을 저장하고 싶어 'remotefilename.gz'로 등장 브라우저를 사용

http://someserver/perl/dl.pl?ID=2

응답 헤더에서 파일 이름을 가진 파일에 ??

답변

48

새 컬 (버전 7.20.0 이상)이 있으면 -J/--remote-header-name이 원하는 것입니다.

-J를 -O과 함께 사용하면 출력 파일 이름을 지정하는 기본 방법으로 URL에서 파일 이름 부분을 사용하고 응답에 Content-disposition : 헤더가있는 경우 curl은 대신 그 이름을 사용하십시오. 서버가 사용하는 경우

+6

으로 디스크에 저장 에 당신이 -J /를 사용한다는 것을 염두에두고을 저장할 파일 이름을 요청합니다 -O/- remote-name 옵션. 그렇지 않으면 작동하지 않습니다. – sepehr

+1

'-OJ'는 살인자 옵션입니다. 기억하기 쉽습니다 :) – colminator

-3

-o 또는 -O 옵션을 사용해보세요.

+2

-o는 -O가 dl.pl?ID=2 – John

13
curl http://example.com/dl.php?file=3123123 -O -J 

리디렉션 다음을 사용 : 11 오류를 한 번에 여러 URL을 다운로드 할 때 : 나는 컬 -OJ 날 오류를 세그멘테이션주는 것을 발견

--location-trusted 
--max-redirs 10 
+0

HTTP 인증 정보를 다른 도메인을 넘어서더라도 리다이렉트 할 것이기 때문에'--location-trusted'를주의하십시오. '--location'은 더 안전한 옵션처럼 보입니다. – jchook

13

.

제 해결책은 wget을 사용하는 것이 었습니다. 최신 버전은 HTTP Content-Disposition 헤더를 지원하며 파일 헤더 정보를 포함하는 경우가 많습니다. 와 함께 원격 헤더 이름 -

wget --content-disposition http://example.com/download/url 
관련 문제