2009-06-25 4 views
1

한 번에 C++ 웹 응용 프로그램을 통해 서버 컴퓨터에서 로컬 하드 디스크로 파일 그룹을 복사하려면 어떻게합니까? 이것은 일종의 일괄 파일을 서버에서 로컬 컴퓨터로 다운로드하는 것입니다. Java에서는 ZipInputStream 및 GZipInputStream을 통해이 작업을 수행 할 수 있다고 생각합니다.C++을 사용하여 한 HTTP 요청으로 서버에서 로컬 하드 디스크로 여러 파일을 복사하는 방법은 무엇입니까?

전체적으로 서버 측 코드를 통해이를 달성 할 수 있습니까? 아니면 파일의 대량 복사를 수행하기 위해 로컬 컴퓨터에서 실행되는 클라이언트가 필요합니까?

답변

0

사용자가이 사실을 알고 있고 파일이 웹 사이트 렌더링에 필요한 것이 아니라면 아카이브로 푸시하고 사이트 링크를 가져올 수 있습니다 (또는 sourceforge와 같은 작업을 수행하여 아카이브 및 브라우저로 리디렉션 할 수 있음) 간단하게 다운로드합니다. 당신이 zlib을 사용할 수 있습니다 보관하십시오. 당신이 전체 페이지를하려는 경우 그냥

int ret; 

/* avoid end-of-line conversions */ 
SET_BINARY_MODE(stdin); 
SET_BINARY_MODE(stdout); 

ret = def(stdin, stdout, Z_DEFAULT_COMPRESSION); 
if (ret != Z_OK) 
    zerr(ret); 
return ret; 

(표준 입력에서 여기) 데이터를 GZIP으로 콘텐츠 유형을 보내고 밀어 (HTML, CSS, JS, IMG)를 하나의 파일로 보내면 모든 파일을 HTML, 심지어 이미지에 삽입 할 수 있습니다 (this 참조).

+0

zlib는 여러 파일을 함께 afaik하지 않으므로 tar 또는 이와 유사한 파일을 사용해야합니다. – Hasturkun

1

양식의 요청에 이러한 요청을 수신하는

http://server:port/fileserver?f=FILE1&f=FILE2&.....&f=FILEN

, 서버 측 코드는, ZLIB를 사용하여 zip 파일로 모든 파일을 팩 및 우편을 보낼 수를 받아들이는 자바 서블릿/ISAPI 확장을 파일을 Content-Type, Content-Length, Last-Modified 등의 HTTP 응답으로 설정합니다.

추가 참고 : IIS6 이상에서 ISAPI를 사용하는 경우이 콘텐츠를 IIS의 커널 모드 응답 캐시에 추가 할 수도 있습니다.

관련 문제