とあるプロジェクトで,DVDのISOイメージを配送する実験をしました。
Webブラウザで受信できるように,WWWサーバに3GBのファイルをWinSCPでアップロードしました。
しかし,Firefox3やIE6では2GBしか受信しないのです。 アップロードに失敗したのかと思いながら,ググってみると,アップロードに失敗したというブログを見つけました。
■Developer @ ADJUST
2009年 03月 11日
数GBのファイルをHTTPでPOSTできるか?
http://devadjust.exblog.jp/9451351/要求ヘッダ中、Content-length が、どうやら 32bit までしか正式に対応していないようで、2GB を越えると負の値に反転してしまうのである。
RFC で規定されているのだろうか?
ここで紹介されている「NyaRuRuの日記」にDVDイメージのダウンロードのことが書かれています。
■http最高 2004-05-26
http://d.hatena.ne.jp/NyaRuRu/20040526/p1そういえば,Open SolarisのISOイメージもftpだったな,と思い出しました。今回はFTPは止めているのでこの方法は使えません。それで,ファイルを2分割しました。「みやぶん太」で分割して,分割時に自動生成されるバッチファイルで結合させます。ダウンロードして結合したファイルとアップロードしたファイルをfcで比較して違いがないことを確認したのですが,他の人は受信に成功したかどうか,あすの連絡待ちです。
rfc2616では、
Content-Length = "Content-Length" ":" 1*DIGIT
と定義されていますから、桁数の制限はありません。signed 32bitで実装しているのは、実装側の手抜き。Apacheだと2.2系列は2Gの壁なくなってたと記憶しています。
もっともIE6がダメなんで、配布用ということだと2G未満に分割しておいた方が無難は無難ですね。
そうそう,サーバ側のもんだいではないことを書くのを忘れてました。
でも,Firefox3でもダメですよ。Opera,Cromeは試してません。
今テストしてみましたけど、apache2.2から Firefox 3で 2.4Gのファイルは普通にダウンロードできるみたいです。あれ? サーバ側大丈夫ですか?
santaさん,実験してもらってすみません。
こちらは,さくらのPREMIUMを使ってます。
Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e
ですね。これが原因か。
別の場所のサーバを使えばよかったかな。明日じっけんしてみよう。
Apache1.3系列はダメです。2.2はOK。2.0は結局飛ばしちゃったのでよく知りません ^^;
やっぱり。しくしく。というか,そろそろ2系に代わるんじゃないかな。
どうなんでしょ? 普通の設定だったら系列変更は大して面倒じゃないけど、システムを作り込んでると細かいところが違うんで面倒かも。
PHPのときも4もしくは5を選択できるようにしてたから,同じようなことをするかも。
レンタルサーバだと、あんまりでかいコンテンツをおかれてもディスク・トラフィック両方で迷惑なので、わざと 1.3のままにしてたりして ......
動画ファイルだとすぐ2G越えちゃいますからね。
WMV9だと640*480の1時間ものの解説ビデオが2GB未満に収まりました。あんまり2GB越えの需要はないのかも。
640x480なんて最近扱ったことがない解像度......最近は基本HDなので ^^; DVカメラなんて壊れちゃって久しいし。
720*480のDVD用MPEG2をWMVに変換するとき,パソコン用だからと640*480で出力したわけです.Core2Duoでもエンコに2時間かかってました.わたしもWide画面が好みです.黒板がそのまま写るので,パンしなくてもよいため,授業記録がらくです.あくまで授業記録であって,e-Learning用ではありません!(^^)!