- - PR -
HTTPのRangeヘッダを用いたファイルの分割ダウンロードアプリケーションについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-04 11:16
始めての投稿です。宜しくお願いします。
巨大ファイルをクライアント側で受信する要件があり、下記URLを見ていましたら、 クライアントに対してファイルを分割して送信するように設計したほうがよいという ことでしたので、HTTPのRangeヘッダを用いてファイルの分割ダウンロードアプリケーションを 作成しております。 http://www.atmarkit.co.jp/fjava/rensai2/webopt13/webopt13.html 作成にあたり上記URL記事中の 「■対策と注意事項→(3)ファイルの分割アップロード/ダウンロード」を参考にしながら クライアント→サーバ時のHTTPヘッダに Range: bytes=0-500,501-1000,1001-1500 上記タグを挿入したところ以下のようなレスポンスが返ってきました。 ※テキストデータのほうがわかりやすいと思いましたので ためしにXMLファイルを500bytesごとに分割して送信するよう要求してみました。 **サーバ→クライアント送信時のパケットキャプチャー内容** //ここから HTTP/1.1 200 OK Date: Mon, 04 Oct 2004 01:37:23 GMT Server: Apache/2.0.46 (Win32) mod_jk2/2.0.2 Content-Type: multipart/byteranges; boundary=3e5952fb33c12710 Content-Length: 1645 Connection: close --3e5952fb33c12710 Content-type: text/xml; charset=utf-8 Content-range: bytes 0-500/1326 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:Lis_ZIPMTAResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://cgrip.com/zip/client/webservices"> <ns1:Lis_ZIPMTAReturn xsi:type="soapenc:Array" soapenc:arrayType="xsd:anyType[1]" xmlns:soapenc="http://schemas.xmlsoap.or --3e5952fb33c12710 Content-type: text/xml; charset=utf-8 Content-range: bytes 501-1000/1326 g/soap/encoding/"> <item href="#id0"/> </ns1:Lis_ZIPMTAReturn> </ns1:Lis_ZIPMTAResponse> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:sdbZIPMTA" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://cgrip.com/zip/client/webservices"> <CITY xsi:type="xsd:string">東京都</CITY> <KANA_CITY xsi:type="xsd:string">トウキョウト</KANA_CITY> <KANA_STATE xsi:type="xsd:string">チヨダ --3e5952fb33c12710 Content-type: text/xml; charset=utf-8 Content-range: bytes 1001-1325/1326 ク</KANA_STATE> <KANA_TOWN xsi:type="xsd:string">チヨダ</KANA_TOWN> <STATE xsi:type="xsd:string">千代田区</STATE> <TOWN xsi:type="xsd:string">千代田</TOWN> <ZIPNO xsi:type="xsd:string">1000001</ZIPNO> <ZZZNO xsi:type="xsd:string">35768</ZZZNO> </multiRef> </soapenv:Body> </soapenv:Envelope> --3e5952fb33c12710-- //ここまで ******************************* 上記キャプチャー内容をみるとHTTPヘッダにて Content-Type: multipart/byteranges; boundary=3e5952fb33c12710が 追加され--3e5952fb33c12710を間に入れながら 500bytes区切りで3つに分割して返しており、 パケット上ではあくまでも1パケットになっており、分割されておりません。 なんとかしてパケット自体を500bytes区切りで3つに分割したいのですが HTTPのRangeヘッダを用いることで実現は可能なのでしょうか? それともRangeヘッダの仕様なのでしょうか?もし仕様だった場合 他のヘッダを用いるなどして今回の要件の実現は可能でしょうか? どなたかご存知の方がいらっしゃいましたらご教授ください。 宜しくお願いします。 |
|
投稿日時: 2004-10-04 12:58
希望通りの動きにしたいのであれば、
Range: bytes=0-500 Range: bytes=501-1000 Range: bytes=1001-1500 というリクエストを別々に送る必要があるでしょう。 Range: bytes=0-500,501-1000,1001-1500 では、 Range: bytes=0-1500 と同じ解釈をされてしまうと思います。 |
|
投稿日時: 2004-10-04 13:52
おっしゃる通りリクエストを別々におくることで
問題解決いたしました。 ありがとうございました。 |
1