为什么cgi页面中包含的图像不会显示在浏览器中?

时间:2010-10-28 06:40:10

标签: html perl cgi

我希望每个人都做得很好。 我正面临着关于图像的问题,我有一个cgi页面,即Login.cgi,在html部分,我已经包含了一些图像,但有些正在显示,有些则没有。

以下是代码:

       #!C:\perl\bin\perl.exe
      use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
      use strict;
      print "Content-type: text/html\n\n";

      print <<END2;
      <html>
      <head><title>LOGIN</title></head>
      <body>
         <table>
           <tr>  
            <td background="C:/Program Files/Apache Software Foundation/Apache2.2/cgi-
               bin/template_3/images/login2222.PNG" style="height: 135px; width:
                 100px;">
              <img src="C:/Program Files/Apache Software Foundation/Apache2.2/cgi-
                   bin/template_3/images/ineer-top-left.gif"/>
             </td>
           </tr>
       </table>
      </body>
     </html>
     END2

在这两个图像中,td标签的“背景图像”正在正确显示,但不是td内的图像。

实际上, 我尝试将内容类型更改为“image / gif”,但它不起作用。 我尝试将src更改为“../template_3/images/ineer-top-left.gif”或类似的东西    “〜/ template_3 / images / ineer-top-left.gif”,但它没有用。

当我右键单击浏览器中的图像并选中“属性”时,它会提供TYPE:不可用 尺码:不可用 但是ADDRESS(URL)是正确的。 任何人都可以帮我找到解决方案。谢谢你

3 个答案:

答案 0 :(得分:4)

由于你正在调用这个CGI,你必须运行一个Web服务器(apache?),所以我猜你在localhost上访问它。在这种情况下,请考虑使用相对路径,如“/cgi-bin/template_3/images/ineer-top-left.gif”或绝对路径,如“http://127.0.0.1/cgi-bin/template_3/images/ ineer-top-left.gif“而不是文件系统上的位置。您可能需要使用存储图像的位置以及站点根目录的位置。

答案 1 :(得分:3)

首先,您为图片提供的网址必须是真实的网址,而不是文件路径。

其次,您的Web服务器可能配置为认为cgi-bin目录中的所有内容都是CGI程序。这意味着如果您为其指定一个指向该目录的URL,则Web服务器将尝试执行该程序而不是直接提供该内容。您需要将静态内容(如图像)移出cgi-bin目录。

答案 2 :(得分:1)

希望这可能有效

  #!C:\perl\bin\perl.exe
  use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
  use strict;
  print "Content-type: text/html\n\n";

  print '
  <html>
  <head><title>LOGIN</title></head>
  <body>
     <table>
       <tr>  
        <td background="../login2222.PNG" style="height: 135px; width:
             100px;">
          <img src="../ineer-top-left.gif"/>
         </td>
       </tr>
   </table>
  </body>
 </html>
 ';