ローカルでは問題なく画像も表示され指定のオンラインにすればリンクを貼ったURLに飛ぶのですが、なぜウェッブサイト上に置くと画像ファイルが壊れてしまうのでしょうか?どうも初歩的な間違いをしているようですが、当方初心者なので分かりやすくご教授くだされば幸いです。
http://q.hatena.ne.jp/1262574735#a979267のつづきです。
ご質問の「jpg画像だけのwebページ」という部分で誤解していたようです。
http通信(普通にブラウザでサイトを見るための通信)では、原理的に、「jpg画像だけのwebページ」というのは扱うことができません。かならずhtmlファイルと画像ファイルがセットでなければなりません。
たとえば画像ファイル "hoge.jpg" と、下記のようなテキストファイル "hoge.html" の2つのファイルをWebサーバにアップロードする必要があります。
<html> <body> <img src="hoge.jpg" /> </body> </html>
おそらくid:clairvoyanceさんは、jpgファイルの冒頭にhtmlファイルを結合し、拡張子htmlの1本のファイルとしてアップロードしているのだと思いますが、これだと、Webサーバはファイル冒頭のテキスト部分のみを認識してクライアントPC(ブラウザ)に送信することになり、画像部分は送信されません。
これは無いと思うのですが、一応確認の為。
ファイルの転送モードが「アスキー転送モード」になっていれば画像ファイルは壊れます。
画像は「バイナリ転送モード」で送信して下さい。
FFFTP であれば、ツールバーにある A と B というボタンで切り替えられます。
※ 違っていればポイントは後程ポイント送信にてお返し致します。
早速ありがとうございます。気が付かない部分でしたのでチェックしてみましたが、「B」(バイナリー)で再度やっても結果は同じでした。ポイントはもちろんお支払いしますよ。
いくつかのケースが考えられます。
ローカルでのファイルサイズと、FTPでアップロードしたファイルサイズは同一でしょうか?
一致しない場合、アップロード時にファイルが壊れてしまっている可能性があります。
原因としては、主にアップロードサイズの上限が考えられます。
まれに設定に問題があることもあります。
一致する場合には、
そもそも表示しようとしているjpgはどの程度のサイズがあるでしょうか。
サーバによっては送出サイズの制限があるところがあり、
あるサイズ以上は要求しても送信してくれないため
受信側からはファイルが壊れて見えてしまうことがあります。
まずは、10kバイト程度の小さなjpeg画像を同じ手順でアップロードしてみてください。
小さな画像で正常に動作するのであれば上記問題と推測できます。
小さい画像でも壊れてしまうのであれば、
アップロード時に何らかの問題がある物と思われます。
URLはダミーです
早速ありがとうございます。jpgファイルのサイズをプロパティで調べてみると、13.3kバイトとあり、ディスク上のサイズは16kバイトとなっていました。なお、念のため、htmlファイルとしてではなく、このjpgファイルとしてアップロード(バイナリー転送で)したら、ちゃんとウェッブ上で見ることができました。どうしてなんでしょうね?
jpgファイルの拡張子をhtmlに変更してバイナリでFTPアップロードすると、アップロード自体は正常に行われます。
しかし、Webサーバが、拡張子htmlはテキストファイルであると解釈して(これをMIMEタイプと言います)クライアントPC(ブラウザ)にデータを送信するので、ご質問のような事態になってしまいます。ファイルの拡張子は変更しないようにしましょう。
ありがとうございます。だんだん核心に近くなってきたような気がします。(トライする前にこれを書いているのですが)ということは、jpgファイルの外に一文字でもテキストを添えて、「html」ファイルとしてなら問題ないということなのでしょうか?
いくら初心者でもそれはありませんよ。
horonictさんのご指摘を受けて、jpgファイルに一緒にテキストを交えて(つまりよくあるウェッブサイト)htmlファイルとしてアップロードすると、jpgファイルが壊れていて、テキストだけが読めます。
htmlのパス指定がローカル(パソコン側)になってるってオチじゃないですか?(´ー`)y-~~。
例えば、
<img src=c:\image\20212.jpg>
って記述すると、自分のパソコン内のお宝画像が表示されますが、ftpでアップしても表示されません。
サーバーごとにディレクトリ構造が違いますが、例えば、virtual/home/image/20212.jpg というディレクトリになってるとすると、
<img src=/image/20212.jpg>
と記述すると、httpで画像が表示されます。imgタグの記述も確認してみてください。
ディレクトリパス等々がわからない場合は、絶対パス、http://www.hogehoge.com/image/20212.jpg と記述する方法もあります。
こんにちは。おそらくどうってことないオチなんだとは私も思うのです。
しかし、このご指摘は私にはちょっと難しいです。もう少し初心者でも分かるように、どのようにしたらjpgファイルだけで作ったページ(htmlファイル)が壊れないでアップできるのかご教授くださいませ。
http://q.hatena.ne.jp/1262574735#a979267のつづきです。
ご質問の「jpg画像だけのwebページ」という部分で誤解していたようです。
http通信(普通にブラウザでサイトを見るための通信)では、原理的に、「jpg画像だけのwebページ」というのは扱うことができません。かならずhtmlファイルと画像ファイルがセットでなければなりません。
たとえば画像ファイル "hoge.jpg" と、下記のようなテキストファイル "hoge.html" の2つのファイルをWebサーバにアップロードする必要があります。
<html> <body> <img src="hoge.jpg" /> </body> </html>
おそらくid:clairvoyanceさんは、jpgファイルの冒頭にhtmlファイルを結合し、拡張子htmlの1本のファイルとしてアップロードしているのだと思いますが、これだと、Webサーバはファイル冒頭のテキスト部分のみを認識してクライアントPC(ブラウザ)に送信することになり、画像部分は送信されません。
このフォローとても有難いです。リアルタイムでチェックしているため、トライする前に返事を書いています。たしかに私は、jpgファイルをhtmlファイルとしてアップロードしましたが、別々に(*は同じ名前で *jpg と *html)アップしなければならないということなのですね?
このフォローとても有難いです。リアルタイムでチェックしているため、トライする前に返事を書いています。たしかに私は、jpgファイルをhtmlファイルとしてアップロードしましたが、別々に(*は同じ名前で *jpg と *html)アップしなければならないということなのですね?