ま、当然、progressive JPEG のことなんでしょうが・・・
ファイルアップロードのある CGI の話。
画像ファイル以外のアップは駄目だということで、FORM データの Content-Type を見て、
image/jpeg
image/gif
image/png
の、3つ以外はエラーにしてたんだけど、InternetExplorer7 から JPEG 画像をアップすると必ずエラーになる。
FireFox3 から同じ画像を上げたら問題ないのに。
で、FORM データの中身を見ると、IE7 は JPEG の Content-Type を image/pjpeg で上げてきてますよ・・・
どうも、2005年頃から問題になっているようで、RFC への記載も無いお得意の「Microsoft の独自実装」ってヤツみたいですね。
なんでもかんでも JPEG ファイルなら(baseline JPEG でも)image/pjpeg をセットしているみたいなので、わざわざ pjpeg にしている意味がまったくない。百害あって一利無し。なのに、なんで Micorosoft はこういうことをするんでしょうか?
Microsoft 信者は、なぜ Microsoft がこんな訳のわからんことをしているのかちゃんと説明しなさい。でないと、Microsoft 信者というだけで、あんたたちが馬鹿者扱いされるのも致し方ないことですぞ。
ちなみに、Windows2000 の InternetExplorer6 SP1 でも image/pjpeg をセットします。
(そういえば、Outlook 等、メールの添付ファイルではちゃんと image/jpeg を使っていたはずです。ま、InternetExplorer の開発チームが馬鹿だった・・・ということなんでしょう)
Microsoft が巨大企業なので、多くの「素人さん(IT業界の中にも、Microsoft 信者という形で存在します)」は Microsoft を「高い技術力を持った会社」と誤解しています。確かに限られた部分では、高い技術力を持っていると思いますが、例えばわしらのように The Internet の世界を商売ネタにしている技術者からすると「Microsoft はメジャー企業の中では最低の技術力の会社」にしか見えませんな。
よく、Microsoft は RFC を無視した独自実装を導入して、周りから「シェアにものを言わせた横暴な行為」と非難されてますが、俺に言わせれば、確かに半分は「わかってて無視した結果」なんでしょうが、残り半分は単に「技術的理解力不足による過った実装」でしかないと思うね。
今回の image/pjpeg もそうでしょう?まったく意味をなしてないんだから。
なんか、Microsoft としては狙いがあったんだろうけど、結局まったく意味がなかった。つまり、完全に技術者の「理解力不足」からくるバグだったってわけ。
面倒くさいことに、IE ファミリーのためだけに、ファイルタイプをチェックするのが、
$type eq 'image/jpeg'
ではなく、
$type =~ /image\/p*?jpeg/
と書かなくちゃいけなくなっちゃう。
正規表現がわからないプログラマだと、
$type eq 'image/jpeg' || $type eq 'image/pjpeg'
のような不細工なコードになっちゃう。
Microsoft が「理解不足」からやっちゃった過った実装は、こうして広く、プログラマに迷惑をかけるのであります。
<追記>
Windows の FireFox 3.0.8 も、Mac OS-X の Safari 3.1.1 も、JPEG 画像の Content-Type は image/jpeg をセットします。
image/pjpeg をセットする狂ったブラウザは、IE ファミリーだけでありましょう。
--
> $type =~ /image\/p*?jpeg/
$type =~ |image/p?jpeg|
--
この方がよろしいのではないかと。