2016-10-15 7 views
0

私は非常に単純なHTMLフォームを作成しています。 CGIファイルにフォームを含めました。私はperlスクリプトを使用しています。私は、次のCGIスクリプトを使用して、私の形式で画像を含めることを試みた:CGI Perlを使ってHTMLに画像を入れるには?

print "<img src=picture1.jpg style=width:600px;height:300px;>"; 

これに伴う問題は、フォーム内の画像が表示されていないということですが、私はすべてのエラーおよび他のすべて作品を得ることはありません私はブラウザからフォームにアクセスするときには問題ありません。

Screenshot of the problem

+1

HTMLには画像が含まれておらず、画像への参照のみが含まれていることにご注意ください。ブラウザは、URLへの参照を解決し、画像を取得するためにURLを取得します。そのURLを取得するときにブラウザーが実際に画像を取得するようにする必要があります。 – reinierpost

答えて

0

あなたはあなたがHTMLで二重引用符を使用する必要がある属性

print "<img src='picture1.jpg' style='width:600px;height:300px;'>"; 
+0

ありがとう、私はまだ同じ結果を参照してください。私は自分の質問を編集し、私が見ているもののスクリーンショットを添付しました。 –

0

のための適切なフォーマットを使用していることを確認してください。

print q{<img src="picture1.jpg" width="600" height="300">};

2

あなたのスクリーンショットを見てから、私はsrc='picture1.jpg'として指定された映像ソースや場所が間違っていることを推測します。

考えられる理由は次のいずれかです

  • ファイルpicture1.jpgが、私はそれが第二の問題だ賭ける別のディレクトリに

ある

  • 、サーバー上のファイル picture1.jpgが存在しません。あなたのCGIスクリプトは cgi-binのようなディレクトリにある可能性が最も高いですから、 src='picture1.jpg'を使ってこの cgi-binディレクトリの画像を探します。

    あなたの写真は本当にここにありますか?cgi-bin/picture1.jpg?ほとんどない可能性があります。

    これは、
    img src='../picture1.jpg' 
    

    「1つのディレクトリレベルアップを移動して、picture1.jpgを探します。

    私は以下の例に示すように、あなたはそれのための正しいパスを設定する必要が意味し、絵はどこかにあると思います"

    img src='../images/picture1.jpg' 
    

    これは、「1つのディレクトリレベルアップを移動し、imageディレクトリ内picture1.jpgを探して」。

    img src='/html/images/picture1.jpg' 
    

    は、これは意味:「その後、imageディレクトリを見つけ、htmlディレクトリを見つけ、あなたのウェブサイトのルートディレクトリに移動して、内部の最後にpicture1.jpg

    パスを調整した後、サーバーのディレクトリ構造に応じました。さらに、他の答えで述べたように、HTML属性を適切にフォーマットする必要があります。

    0

    形式の画像が表示されませんが、私はすべてのエラー

    を得ることはありませんあなたは、ブラウザですべてのエラーを得ることはありませんが、あなたは、Webサーバーのエラーログをチェックしていますか?

    CGIプログラムとイメージがどちらも実際にWebサーバーに格納されているとは言わないので、問題の内容を確認するのは難しいですが、Webサーバーのログにエラーが表示されることが予想されますそれは物事を明らかにするでしょう。

    私が推測しなければならない(私はしませんが、とにかく!)私は問題が画像の場所にあると言います。 Webサーバー上にCGIプログラムを設定する一般的な方法は、特定のディレクトリ(多くの場合、cgi-binと呼ばれます)をすべてのCGIプログラムを格納する場所として指定することです。しかし、実際には、これは、あなたのWebサーバーに "このディレクトリのすべてがCGIプログラムであると言っていることです。このディレクトリのリソースを要求するときはいつでも、プログラムを実行して結果をブラウザ"。

    ウェブサーバーは、そのディレクトリ内のすべてはCGIプログラムだと考えています。つまり、このディレクトリに画像ファイルを置くことはできません。 Webサーバーが/cgi-bin/picture1.jpgの要求を受け取ると、picture .jpgはイメージを返すプログラムだと思うので、イメージファイルを実行しようとします。そして、それはうまくいっていないし、エラーログに500のエラーが出るでしょう。

    あなたは私たちを示しているコードはこれです: - CGIプログラムを含むディレクトリになりますあなたはsrc=picture1.jpgを持っているので

    print "<img src=picture1.jpg style=width:600px;height:300px;>"; 
    

    、ウェブサーバは、画像ファイルが現在のディレクトリにあることを前提としています。だから、これが私が上で説明した問題であるという良いチャンスがあります。

    もう1つのオプションは、特定の拡張子(多くの場合.cgi)がCGIプログラムと見なされるようにWebサーバーを設定したことです。そうであれば、私の以前の説明はあなたの問題を説明するものではありません。その場合、イメージファイルのURLが間違っている可能性が最も高く、Webサーバーエラーログに404エラーが表示されます。

    どちらの場合でも、Webサーバーのエラーログであなたを待っている有用な情報がほぼ確実にあります。そこを見て、あなたの質問に詳細を追加してください。

    関連する問題