2009-06-24 4 views
39

사용 사례 : 사용자가 웹 페이지의 링크를 클릭하면 - 붐! 그의 폴더에 앉아있는 파일의로드.
나는 multipart/mixed message를 사용하여 파일을 포장하려하지만, 단지 파이어 폭스하나의 HTTP 요청으로 여러 파일을 다운로드하는 방법은 무엇입니까?

이 내 응답이 같은 모습입니다 위해 작동하는 것 같다 :

HTTP/1.0 200 OK 
Connection: close 
Date: Wed, 24 Jun 2009 23:41:40 GMT 
Content-Type: multipart/mixed;boundary=AMZ90RFX875LKMFasdf09DDFF3 
Client-Date: Wed, 24 Jun 2009 23:41:40 GMT 
Client-Peer: 127.0.0.1:3000 
Client-Response-Num: 1 
MIME-Version: 1.0 
Status: 200 

--AMZ90RFX875LKMFasdf09DDFF3 
Content-type: image/jpeg 
Content-transfer-encoding: binary 
Content-disposition: attachment; filename="001.jpg" 

<< here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3 
Content-type: image/jpeg 
Content-transfer-encoding: binary 
Content-disposition: attachment; filename="002.jpg" 

<< here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3 
--AMZ90RFX875LKMFasdf09DDFF3-- 

당신에게

추신 : 감사 아니요, 파일을 압축하는 것은 옵션이 아닙니다.

+0

실제 응답입니까? 또는 각 첨부 파일의 Content-length 같은 것을 잘라 냈습니까? 그래도 작동하지 않는다면 웹 브라우저의 현재 세대와 함께 할 수 없다고 생각합니다. – Joe

+1

이것의 목적은 무엇입니까? 거기에 더 나은 방법이있을 수 있습니다 ... –

+0

사실, 콘텐츠 길이는 내가 rfcs 찾고있어 필요하지 않을 수도 있습니다. – Joe

답변

29

모든 브라우저에서 압축 결과가 유일한 옵션입니다. zip이 동적으로 생성 될 수 있다는 것을 모르기 때문에 옵션이 아니라면 가능합니다. Zip 파일에 대한 원한이 있기 때문에 옵션이 아니라면 ...

MIME/multipart는 HTTP 메시지 및/또는 HTTP 서버로의 POST 전송 용입니다. 그것은 HTTP 트랜잭션의 클라이언트 측에서 수신되고 구문 분석되도록 의도되지 않았습니다. 일부 브라우저는이를 구현하고 일부 브라우저는 구현하지 않습니다.

또 다른 대안으로 개별 파일을 다운로드하는 Windows를 여는 JavaScript 스크립트가있을 수 있습니다. 또는 사용자가 선택한 디렉토리에 파일을 다운로드하는 Java 애플릿 (NetAdmin이 워크 스테이션에 배포 할 수있는 것처럼 문제가되어서는 안되는 엔터프라이즈 응용 프로그램 인 경우 Java Runtime이 시스템에 필요합니다).

+0

다운로드 후 추가 작업을 수행하도록 사용자에게 요청하지 않아도되므로 압축은 옵션이 아닙니다. 멀티 파트 메시지가 HTTP 전송 용이 아니라는 귀하의 말은 의미가 없습니다. 예를 들어, 여러 파일은 multipart/form-data를 사용하여 업로드됩니다. 바이너리 다운로드를 위해 멀티 파트 메시지를 금지해야하는 이유가 표시되지 않습니다. – zakovyrya

+1

@zakovyrya : 마지막 문장을 다시 말해 보겠습니다. multipart 메시지는 HTTP 트랜잭션의 클라이언트 측에서 수신되고 구문 분석되지 않습니다. –

+0

Hu?브라우저에서 파일 업로드가 어떻게 진행된다고 생각하십니까? – Einstein

1

10 년 전에 netscape에서 4 일을 기억해야합니다. 그 당시에 다른 브라우저와는 전혀 다른 방식으로 경계선을 사용했습니다.

질문에 답변하지 않지만 HTTP 1.1은 요청 파이프 라이닝을 지원하므로 적어도 동일한 TCP 연결을 사용하여 여러 이미지를 다운로드 할 수 있습니다.

0

base64 인코딩을 사용하여 매우 작은 이미지를 HTML 문서에 포함 할 수 있지만 브라우저/서버 관점에서 볼 때 기술적으로 여전히 1 개의 문서 만 전송합니다. 어쩌면 이것이 당신이하려는 의도일까요?

Embedd Images into HTML using Base64

편집 : 난 그냥 내 구글 검색에서 발견 된 대부분의 방법은 파이어 폭스, 그리고 IE를 지원하는 것을 깨달았다.

+1

데이터 URI는 현재 잘 지원되지만 (http://stackoverflow.com/questions/1765342/which-browsers-support-data-uris-and-since-which-version), 도움이되지 않습니다. 이 질문에. – Brilliand