• ベストアンサー

写真ファイルの拡張子の大文字、小文字

ホームページを作っています。うっかり写真ファイルの拡張子を大文字のJPGにしてしまったら、ローカルフォルダのホームページをブラウザFirefox) で開いたら正しく写真表示されましたが、サーバ側(Web側)を開くと写真が認識されず空欄になりました。同じブラウザで同じホームページを開いているのになぜ違いが出るのでしょう。 ちなみにFTPでサーバ側の拡張子JPGをjpgに修正したら問題は解消されました。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.6

>あくまでもローカルPCにダウンロードされたHTMLコードをWindows環境で解釈するのでしょうからそういうことにはならないような気がするのですが? htmlの解釈はwebブラウザの動作しているwindows側ですが、htmlに <img src="abc.jpg"/> と書かれていた場合、「"abc.jpg"のデータをください」とwebサーバにリクエストするわけです。 そのリクエストを解釈するのはwebサーバ側ですよ。 htmlの解釈と、そこから行われるwebサーバへのリクエストを混同されていませんか?

dragon-man
質問者

お礼

ありがとうございました。 なるほど納得出来ました。

その他の回答 (5)

  • szk9999
  • ベストアンサー率25% (6/24)
回答No.5

>Windows環境でブラウザがHTMLコードを解釈するのでしょうから、この時点では大文字、小文字の扱いの違いはないように思うのですが、なにか勘違いしていますか? まず、あなたの言うWEBサーバーがUNIX系のOSが動いているサーバーにあるとしてですが、 画像ファイルもWEBサーバーにあります。だから、参照するのはWEBサーバー内のファイルです。だから、UNIXの規則でしか参照できません。そういうものです。 これがWindowsサーバーだったら、大文字・小文字の区別をしません。(もちろん設定によります) HTMLをローカルにおいた画像ファイルを参照する形で大文字・小文字で試してみればその違いは分かるかと思います。 まあ、歴史の問題です。(そういうものの残りでしょうかね) ちょっと前は、文字コードがUNIXはEUC、WindowsはShift-Jis、MacはJisとかめちゃくちゃでしたからね、そういうことを理解していないとHTMLを上手く書けない時代だったということです。

dragon-man
質問者

お礼

>参照するのはWEBサーバー内のファイルです。だから、UNIXの規則でしか参照できません。 ブラウザはサーバからダウンロードしたHTML文の中に記述された(***.JPG)を写真ファイルとして解釈するのではなく、サーバ内の***.JPGを直接参照するように機能すると言うことでしょうか。それなら納得がいきますが。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>この意味がよく分かりません。ブラウザはローカルとWebとで違った動作をすると言うことですか? 教えていただければ幸甚です。 違った動作というか、Webブラウザ的にはcontent-typeを見てデータが何かを判断するのが動作です(IEはそれを無視して独自判断とかされてシステムの作り手側としてはやっかい極まりなかったんですが)。 ローカルファイルを参照するときには擬似的にcontent-typeをWebブラウザ自身で設定するなりしてるとは思います。 ただ今回の件でいえば、#2の方のいわれているようにWebサーバ側がunix系OSでファイル名大文字小文字を区別することから大文字小文字違いでファイルが存在しないものとして扱われた。というのが正解な気がします。

dragon-man
質問者

お礼

ありがとうございます。 ややしつこくなって申し訳ありませんが、質問ついでに >#2の方のいわれているようにWebサーバ側がunix系OSでファイル名大文字小文字を区別することから大文字小文字違いでファイルが存在しないものとして扱われた。 ブラウザがサーバのUNIX環境で動作するのであれば、そのことは理解出来ますが、あくまでもローカルPCにダウンロードされたHTMLコードをWindows環境で解釈するのでしょうからそういうことにはならないような気がするのですが? しつこくて申し訳ありません。

  • szk9999
  • ベストアンサー率25% (6/24)
回答No.3

>Windows(ローカル)とUNIX(サーバ)の違いと言うことですか。 というよりも、歴史の違いです そもそもWindowsは大文字・小文字をファイル名では区別しないという決まり事でできています。 インターネットはUNIX系で進化したので、UNIXの文化で出来ています。 ちょっと前は、HTMLを書く場合そういったことはある意味で常識だったのですがね・・・ もう知らない人が多いようで・・・ この辺が参考になるのでは https://ja.play-and-more.com/710-how-to-enable-case-sensitive-folders-on-windows-10

dragon-man
質問者

お礼

ありがとうございます。 WindowsとUNIX環境での大文字、小文字の扱いが異なることは分かりました。しかしながらブラウザの動作としては、urlにアクセスして、サーバ上の対応するHTML文をダウンロードして、Windows環境でブラウザがHTMLコードを解釈するのでしょうから、この時点では大文字、小文字の扱いの違いはないように思うのですが、なにか勘違いしていますか? ご教授下さい。

  • szk9999
  • ベストアンサー率25% (6/24)
回答No.2

あなたのPCのOSのバージョンは? Windowsはもともと、ファイル名の大文字と小文字を区別しません。 Dos時代からの慣例です。 だから、ローカルのJPGもjpgも一緒だと判断するので、開くことができます。(存在を確認できる) 一方、多くのWEBサーバーはUNIX系(Linux含む)のファイル名は大文字と小文字は別モノです。だから開けない(=存在していない)わけです。 ただし、Windows10の最新バージョンは設定によって、大文字・小文字を別々なものとして判断できるようになりました。 一度、確認した方がいいですね。

dragon-man
質問者

お礼

ありがとうございます。 Windows10 2004です。 Windows(ローカル)とUNIX(サーバ)の違いと言うことですか。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

firefoxなどのブラウザでローカルファイルを参照する場合は、 拡張子で判断するようになっているのかもしれませんが、 webサーバ経由(というかhttpプロトコル)の場合は、一緒に送られてくるcontent-typeで判断するようになってるはずです(jpeg画像だと image/jpeg だったかな)。 で、webサーバ側が拡張子JPGだとjpeg画像だと判断せずにcontent-typeをimage/jpegで送ってくれない。 結果ブラウザ側でもjpeg画像と判断しない。 ということじゃないかと。

dragon-man
質問者

お礼

ありがとうございます。 >一緒に送られてくるcontent-typeで判断するようになってるはずです(jpeg画像だと image/jpeg だったかな)。 この意味がよく分かりません。ブラウザはローカルとWebとで違った動作をすると言うことですか? 教えていただければ幸甚です。