2009-06-24 22 views
39

ユースケース:ユーザーがウェブページのリンクをクリック - ブーム!彼のフォルダにあるファイルの読み込み。
これは私の応答がどのように見えるかである私はmultipart/mixed messageを使用してファイルをパックしようとしたが、それはFirefoxのみ1つのHTTPリクエストで複数のファイルをダウンロードする方法は?

のために働くようだ:

P.S.ありがとう

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のようなものをカットしましたか? これでうまくいかない場合は、現世代のWebブラウザではCan not Be Doneを実行していると思います。 – Joe

+1

これは何の目的ですか?よりよい方法があるかもしれません... –

+0

実際には、コンテンツの長さは、rfcsを見ているので必要ではないかもしれません。 – Joe

答えて

29

すべてのブラウザで一貫した結果が得られる唯一の選択肢は、圧縮のみです。 zipが動的に生成されることがわからないため、オプションではない場合は、そうすることができます。あなたがzipファイルに対する恨みを持っているので、オプションではない場合は、よく。

MIME/multipartは、HTTPメッセージやHTTPサーバーへのPOST送信用です。 HTTPトランザクションのクライアント側で受け取られ、解析されることは決してありませんでした。一部のブラウザでは実装しているブラウザもあれば、そうでないブラウザもあります。

別の方法として、個々のファイルをダウンロードするJavaScriptスクリプトを開くこともできます。 Javaアプレット(エンタープライズアプリケーションの場合はマシン上にJava Runtimeが必要ですが、NetAdminがワークステーションに展開できるので問題はありません)は、ユーザーが選択したディレクトリにファイルをダウンロードします。

+0

ジッピングはオプションではありません。ダウンロード後に追加の操作を実行するようにユーザーに要求しないためです。 マルチパートメッセージがHTTP転送を目的としていないという記述は意味がありません。例えば、複数のファイルはmultipart/form-dataを使用してアップロードされます。バイナリダウンロードのために複数のメッセージが禁止されるべき理由は何もありません – zakovyrya

+1

@zakovyrya:その最後のステートメントを言い換えることができます。マルチパートメッセージは、HTTPトランザクションのクライアント側で受信および解析されることはありませんでした。 –

+0

胡?ブラウザからのファイルアップロードはどのように機能すると思いますか? – Einstein

1

10年以上前のnetscapeの4日間でこれを覚えています。それはあなたのやっていることのような境界線を使用し、当時の他のブラウザではまったく動作しませんでした。

質問に答えることはできませんが、HTTP 1.1では要求のパイプライン化がサポートされているため、複数の画像をダウンロードするために少なくとも同じTCP接続を再利用できます。

0

(非常に小さい)イメージをHTMLドキュメントに埋め込むためにbase64エンコーディングを使用できますが、ブラウザ/サーバーの観点からは、技術的には1つのドキュメントしか送信しません。多分これはあなたがやろうとしていることでしょうか?

Embedd Images into HTML using Base64

編集:私はちょうど私が私のGoogle検索で見つかったほとんどのメソッドはFirefoxのみではなく、IEをサポートしていることに気づきました。

+1

データURIは現在かなりサポートされていますが(http://stackoverflow.com/questions/1765342/which-browsers-support-data-uris-and-since-which-version)、それらは役に立たないでしょうこの質問で – Brilliand

関連する問題