【问题标题】:HTML PHP: show default IMG if the specified one does not exist using pictures of network locationHTML PHP:如果指定的IMG不存在,则使用网络位置的图片显示默认IMG
【发布时间】:2018-05-22 12:56:54
【问题描述】:

我认为这已经得到解答,但我正在尝试根据变量显示图片。如果图像不存在,则应显示默认 IMG。 问题是图像都没有显示。图像存储在可从网络访问的服务器上。图片以 $IDnr.jpg 作为名称。

<?php
  $filename="\\Network-server\map\map\map\map\<?php echo $IDnr; ?>.jpg";
  if(is_readable($filename)){
     $fileToShow=$filename;
  }else{
    $fileToShow="\\Network-server\map\map\map\map\defaultIMG.jpg";
  }
    echo '<img class="imageclass" src="<?php echo $fileToShow; ?>"/>';
?>

【问题讨论】:

  • 尝试回显您的 $filename 变量并访问该路径以检查资源(图像)是否可访问
  • 首先替换这个echo '&lt;img class="imageclass" src="'.$fileToShow.'"/&gt;';
  • @adi 我试过了,但没有显示任何内容。
  • @ManojKumar 我替换了它,错误仍然存​​在。
  • 是的.. 这意味着您的字符串不正确。尝试@monkeyzeus 建议的方式。您需要正确连接和使用反斜杠。

标签: php html image if-statement networking


【解决方案1】:

你需要正确地插入字符串:

$IDnr = 'filename';

$filename = "\\\\Network-server\\map\\map\\map\\map\\".$IDnr.".jpg";

echo $filename;

输出:

\\Network-server\map\map\map\map\filename.jpg

反斜杠\ 表示应按字面意思使用以下字符,因此当您真正需要时需要加倍。

字符串连接是通过. 表示法完成的,因此您不能只是在字符串构建过程中回显某些内容。


根据 cmets 更新:

您好,我按照页面上的说明进行操作,似乎是 PHP 用户权限的问题。错误现已消失,但图片仍未显示。

图片未显示的原因是您的代码尝试使用直接网络路径来检索资产,因此您有几个选择。

选项1:使用file:链接到网络路径

网络路径仅适用于实际在网络上并有权读取资源的访问者,因此您可以执行echo '&lt;img src="file:'.$filename.'"/&gt;'; 之类的操作,但网络限制可能并不理想。

选项 2:读取文件内容并将其作为内嵌图像提供

echo '<img src="data:image/jpeg;base64,'.base64_encode( file_get_contents( $filename ) ).'"/>';

最大的问题是它不能被 Web 浏览器缓存,PHP 必须从网络位置读取并将 EVERY SINGLE 图像加载到所有用户请求的内存中,因此这可能会导致严重的性能影响。

选项 3:挂载网络位置

这是最复杂但也是最合适的解决方案。您需要弄清楚如何符号链接或挂载网络位置,以便您可以拥有正常的网络链接,例如:

echo '<img src="http://example.com/map/map/map/'.$IDnr.'.jpg"/>';

【讨论】:

  • 感谢您的详细回答。我尝试了上述方法并想出了这个: '; ?> 不幸的是它仍然不起作用。
  • @MaxTheuws 听起来图像都不存在,或者 PHP 无权访问它们。
  • 图片存在。我可以通过 Windows 资源管理器访问它们。我可以通过 HTML 打开它们,但当我尝试运行这个 PHP 脚本时不能。
  • @MaxTheuws PHP 通常在与 Windows Explorer 不同的用户名下运行。您需要检查权限并确保 PHP 可以访问网络驱动器。
  • file_get_contents 表示权限被拒绝。我会通过你给我的链接去解决问题。
【解决方案2】:

第一行有错误,而不是

$filename="\\Network-server\map\map\map\map\<?php echo $IDnr; ?>.jpg";

$filename="\\Network-server\map\map\map\map\\".$IDnr.".jpg";

【讨论】:

  • @mplungjan 请不要编辑答案中的代码,尤其是当您的编辑导致语法错误时。
猜你喜欢
  • 2014-11-14
  • 2021-07-07
  • 2023-03-20
  • 2020-11-25
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
相关资源
最近更新 更多