繁体   English   中英

图像占位符用于断开图像链接?

[英]Image Placeholder for Broken Image Link?

目前,用户可以将图像上传到我的网站,图像的位置存储在MySQL表中。

当我使用SELECT函数调用图像时,它们通过CSS样式background-image:url('image.jpg')加载

目前我使用了一个IF语句,它将占位符图像放置在列“Image_URL”设置为NULL的任何行的位置。

if ($row["Image"] != "") {                  
                    echo "<td width='200' rowspan='3'><center><a href='/uploads/".$row["Image"]."' target='_blank'><div class='image-cropper'><div class='rounded' style='background-image:url(\"/uploads/".$row["Image"]."\")'>";
                } else {
                    echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg\")'";
                }

但是,我的方法不适用于错误链接(原始图像已被删除,或者由于某种原因,链接错误。)它只显示空白,我可以看到原因,因为$ row [“Image” ]!= NULL ,那里有一个链接,它只是没有链接到图像。

当在提供的链接中找不到图像时,有没有办法加载我的占位符图像no-image.jpg?

我的DIV只是为了使我的图像循环和居中,所以我将它们发布在这里以防它有用,你可以帮助我调整这些类来添加占位符功能。

.image-cropper {
    max-width: 150px;
    height: auto;
    position: relative;
    overflow: hidden;
}
.rounded {
    display: block;
    margin: 0 auto;
    height: 150px;
    width: 150px;
    -webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    -ms-border-radius: 50%;
    -o-border-radius: 50%;
    border-radius: 50%;
    background:center no-repeat;
    background-size:cover;
}

图像裁剪器和圆角DIV实际上来自这个站点,所以谢谢你的Hiral

在设法使用glob之后,我设法使用file_exists让它工作。

但是,感谢Stewartside让我走上正确的道路,并构建了由此产生的if语句。

这是现在的代码:

$image = $row["Image"];
if ($row["Image"] != "") {  
    if (file_exists('uploads/'.$image)) {               
        echo "<td width='200' rowspan='3'><center><a href='/uploads/".$row["Image"]."' target='_blank'><div class='image-cropper'><div class='rounded' style='background-image:url(\"/uploads/".$row["Image"];
    } else {
        echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg";
    }
    } else {
        echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg";
}

我假设以下也适用:

    if (file_exists('uploads/'.$row["Image"])) {    

谢谢大家的帮助! :)

您可以使用glob()函数来查明文件是否存在。

这些方面的东西:

if ($row["Image"] != "") {
  var $file = glob("/uploads/".$row["Image"]); 
  if (count($file) > 0) {
    echo "<td width='200' rowspan='3'><center><a href='/uploads/".$row["Image"]."' target='_blank'><div class='image-cropper'><div class='rounded' style='background-image:url(\"/uploads/".$row["Image"]."\")'>";
  } else {
    echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg\")'";
  }
} else {
  echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg\")'";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM