如何使用CGI Perl在HTML中放置图片?

时间:2016-10-15 00:02:06

标签: html perl cgi

我正在创建一个非常简单的HTML表单。我已将表单包含在CGI文件中。我正在使用perl脚本。我尝试使用以下CGI脚本在表单中包含图片:

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

这个问题是表单中的图片没有显示,但是当我从浏览器访问表单时,我没有收到任何错误,其他一切正常。

Screenshot of the problem

4 个答案:

答案 0 :(得分:2)

通过查看屏幕截图,我猜测指定为src='picture1.jpg'的图片来源或位置不正确。

可能的原因可能是:

  • 您的服务器上不存在picture1.jpg文件
  • 文件picture1.jpg位于不同的目录中

我敢打赌这是第二个问题。您的CGI脚本很可能位于名为cgi-bin的目录中,因此使用src='picture1.jpg'可以查找此cgi-bin目录中的图片。

您确定自己的照片位于此处:cgi-bin/picture1.jpg?很可能不是。

我猜图片在其他地方,这意味着你必须为它设置正确的路径,如下例所示:

img src='../picture1.jpg'

这意味着“将一个目录升级并查找picture1.jpg”。

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

这意味着:“转到一个目录级别并查找picture1.jpg目录中的image。”

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

这意味着:“转到您网站的根目录,找到html目录,然后找到image目录,最后找到picture1.jpg

根据服务器的目录结构调整路径后,图像应根据需要显示。此外,正如其他答案中所述,您应该始终正确格式化HTML属性。

答案 1 :(得分:0)

确保使用正确的属性格式

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

答案 2 :(得分:0)

你需要在html中使用双引号。

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

答案 3 :(得分:0)

  

表单中的图片没有显示,但我没有收到任何错误

您在浏览器中没有收到任何错误,但是您是否检查过Web服务器错误日志?

您没有说您的CGI程序和图像实际存储在您的Web服务器上的位置,因此很难确定问题是什么,但我希望您在Web服务器日志中收到错误会清理的。

如果我不得不猜测(我没有,但我还是要去!)我会说问题出在图像的位置上。在Web服务器上设置CGI程序的常用方法是将某个目录(通常称为cgi-bin)指定为包含所有CGI程序的位置。但实际上,这意味着您要对您的Web服务器说“此目录中的所有内容都是CGI程序 - 只要您在此目录中获得资源请求,就需要执行程序并将结果返回给浏览器”。

因此,Web服务器认为该目录中的所有是CGI程序。这意味着您无法将图像文件放在此目录中。因为如果Web服务器收到/cgi-bin/picture1.jpg的请求,它会认为picture。jpg是返回图像的程序 - 因此它将尝试执行图像文件。这不是goitn工作,你会在错误日志中得到500错误。

您向我们展示的代码是:

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

因为您有src=picture1.jpg,所以Web服务器假定图像文件位于当前目录中 - 该目录将是包含CGI程序的目录。所以很有可能这就是我上面描述的问题。

另一个选项是您已配置Web服务器,以便具有特定扩展名(通常为.cgi)的任何内容都应被视为CGI程序。如果是这种情况,那么我之前的解释并不能解释你的问题。在这种情况下,您很可能只是错误地获取了图像文件的URL,并且在Web服务器错误日志中会出现404错误。

但在这两种情况下,Web服务器错误日志中几乎肯定会有更多有用的信息等着您。请查看并在您的问题中添加详细信息。