【问题标题】:Why are the images included in cgi page not getting displayed in browser?为什么 cgi 页面中包含的图像没有在浏览器中显示?
【发布时间】:2011-05-01 17:21:44
【问题描述】:

我希望每个人都做得很好。 我遇到了有关图像的问题,我有一个 cgi 页面,即 Login.cgi,在 tha 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”,但它不起作用。

当我在浏览器中右键单击图像并检查属性“它给出了类型:不可用 尺寸:不可用 但是地址(URL)是正确的。 任何人都可以请帮我找到解决方案。谢谢

【问题讨论】:

    标签: html perl cgi


    【解决方案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>
     ';
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我应该对 htdoc 进行任何更改吗?
      • 您需要将图像从 cgi-bin 目录中移出并移到您存储站点其余静态内容的位置。
      【解决方案3】:

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

      【讨论】:

      • 感谢您的回复,我尝试了两种方式,即相对和过时但仍然存在相同的问题。
      • 如果您在浏览器中输入图像的相对或绝对路径,您会在那里看到吗?如果不这样做,则可能是文件权限问题、路径不正确,或者您的服务器设置为仅提供 cgi-bin 目录中的 cgi 文件(无论如何,将图像放入 /images 是个好主意)跨度>
      • 是的,这意味着它不会从您的 cgi-bin 目录中提供图像。将它移动到 /images 目录(与 cgi-bin 目录具有相同的父目录)并尝试在那里访问它。
      • 我也试过这个方法,但问题仍然存在我已经创建了..对这个问题完全感到困惑。;-(
      • 听起来您正在运行 apache,因此请务必了解 httpd.apache.org/docs/2.1/platform/windows.html(尤其是区分大小写)。还要花一些时间阅读文档并查看一些示例配置。确保您有一个 DocumentRoot 指令,因为该目录将是“/”映射到的位置。
      猜你喜欢
      • 2014-05-07
      • 2014-03-30
      • 1970-01-01
      • 2013-04-21
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多