2016-12-19 5 views
-1

curl을 사용하여 서버에서 * .txt 파일을 다운로드하고 싶습니다. 그러나 불행히도 저는 이것을 처음부터 끝내야하기 때문에 이해할 수 없습니다. 나는 반복적 인 반복자를 사용합니다. 파일 시스템, 어쩌면 당신은 내 문제를 해결하는 다른 방법이 있습니까? 감사합니다)파일 목록 가져 오기 Curl

+0

당신은 텍스트 파일에있는 모든 URL을 가지고 있습니까? – JoseLinares

+0

질문을 이해하지 못해 죄송합니다. 내 컴퓨터에 연결하고 있는데이 컴퓨터의 모든 txt 파일을이 서버에 다운로드해야합니다. – Jack

+0

하지만 먼저 모든 파일 목록을 받아서 반복해야합니다. 생각한다 – JoseLinares

답변

0

boost::filesystem은 로컬 컴퓨터의 파일 경로와 로컬 네트워크의 UNC 경로에서만 작동합니다. 인터넷을 통해 원격 파일을 반복하는 데 사용할 수 없습니다.

파일이 HTTP 서버에있는 경우 libCURL 이 HTTP 프로토콜의 일부가 아니므로 파일을 직접 반복 할 수 없습니다. 파일이있는 실제 디렉토리에 대한 URL을 요청할 때 HTTP 서버가 파일 목록을 포함하는 HTML 파일 (또는 다른 형식)을 제공하면 희망이 있습니다. 그러나 보안상의 이유로, 많은 HTTP 서버가이 기능을 비활성화합니다 특색! 대부분의 서버는 index.html, index.php, default.aspx 등과 같은 특정 파일로 리디렉션합니다. 그러나 HTTP 서버가 파일 목록을 검색하도록 허용하는 경우 URL을 결정하기 위해 수동으로 해당 목록 데이터를 검색하고 구문 분석해야합니다 개별 파일을 다운로드 한 다음 필요에 따라 다운로드 할 수 있습니다.

파일이 FTP 서버에있는 경우 디렉토리 목록이 FTP 프로토콜의 일부이고 libCURL이 FTP 디렉토리 목록을 검색 할 수 있으므로 (libCURL이 알 수 있도록 요청 된 URL이 백 슬래시로 끝나야합니다.) 디렉토리가 요청되고 특정 파일이 아님). 그러나 FTP 서버가 전송할 형식으로 지정할 수있는 목록 데이터를 구문 분석해야합니다 (다양한 온라인 FTP 서버에서 사용되는 많은 목록 형식이 있습니다!). 최신 FTP 서버는 목록 데이터의 분석을 용이하게하기 위해 FTP MLSDMLST 명령 (원래 LIST 명령과 반대)을 지원하므로 FTP 서버가 해당 명령을 지원할 경우 libCURL에서 libCURL의 CURLOPT_CUSTOMREQUEST 옵션을 통해 해당 명령을 사용하도록 지시 할 수 있습니다 . 또는 파일 세부 정보가 아니라 타임 스탬프, 크기 등과 같은 파일 이름에만 관심이있는 경우 libCURL의 CURLOPT_DIRLISTONLY 옵션을 통해 FTP NLST 명령을 대신 사용할 수 있습니다.

관련 문제