【问题标题】:Loading of PNG image through CGI program failing with errors通过 CGI 程序加载 PNG 图像失败并出现错误
【发布时间】:2014-05-23 17:41:41
【问题描述】:

我正在写一个 cgi 脚本来在浏览器中显示 png 图像。当用户点击 HTML 页面中的“提交”表单时,调用 CGI 程序来显示图像。

但这对我不起作用。该脚本试图在浏览器中打开 PNG 图像,但该图像包含以下错误消息

"The image “http://localhost/cgi-bin/image.sh?subbtn=Submit” cannot be  displayed, because it contains errors."

以下是CGI代码的sn-p。

!/bin/bash

echo "Content-type: text/html"
echo "Content-type: image/png"

echo ""

echo  "<html>"
echo "<body>"
echo "Hi"

echo "<img src="/home/zaman/ssdggraph/SSDGhistory.png" alt="DG-Reports">"
echo "</body>"
echo "</html>"

如果我从上面的代码中删除以下行,则会显示来自img src 标记的alt 部分中的文本"DG-Reports"

echo "Content-type: image/png"

此外,如果我在纯 HTML 页面中编写相同的代码,PNG 图像也可以正常显示。

请建议我在代码中缺少什么以显示图像而不会出现任何错误?

【问题讨论】:

  • 这似乎是一个编程问题,建议移至 SO。
  • 相对路径,你的服务器无法访问文件
  • @ChrisDown 我不同意这是一个网络服务器问题
  • 这里没有任何东西表明这只是一个编程错误。
  • 把图片复制到webserver的DocumentRoot,但是还是无法加载图片

标签: apache bash html cgi


【解决方案1】:

您应该为&lt;IMG&gt;src 属性指定一个可以从浏览器访问的URL。

/home/zaman/ssdggraph/SSDGhistory.png 不太可能满足该要求。 (您可能应该有类似http://path_known_to_webserver/SSDGhistory.png 的东西。

您可能还应该阅读网页和 cgi 脚本的概念。我会称一个 CGI 为“显示图像”,一些程序将在上面的 URL 中引用,并在网页引用它并且浏览器请求它时动态地流出图像数据。这可能是你的意思,但有点不清楚。

【讨论】:

    【解决方案2】:

    你必须使用内容类型,然后是空行:

    #!/bin/bash
    echo "Content-type: image/png"
    echo
    cat /var/www/img/your-image.png
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      相关资源
      最近更新 更多