1

我想显示图像。用户最多可以添加 7 个图像,但如果需要,他们也可以添加少于 7 个。

我四处搜寻,发现这file_exists()是我所追求的功能,但我尝试了几种方法,但它总是给我没有形象。

这是我尝试的一种方法:

<?php if(file_exists(base_url() . "photos/" . $p['p_id'] . "_5.jpg")):?>
    <div class="single">
       <a href="<?php echo base_url();?>photos/<?php echo $p['p_id'];?>_5.jpg" rel="lightbox[image]">
         <img src="<?php echo base_url();?>photos/<?php echo $p['p_id'];?>_5.jpg" style="width:100px; height:100px;"/>
       </a>
    </div>
<?php endif; ?>

然后我四处寻找,发现在函数内部定义路径不是一个好主意,所以我在外面定义了它:

<?php $path = base_url() . "photos/" . $p['p_id'] . "_";?>
     <?php $img4 = $path . "4.jpg";?>
      <?php if(file_exists($img4)):?>

这也不起作用。我正在测试文件夹“照片”中的 4 张图像,所以我知道应该显示 4 张图像。关于我应该如何解决它的任何想法都会很棒。谢谢

4

2 回答 2

4

该函数file_exists接受文件路径作为其参数,而不是像您现在使用的是 CodeIgniter 那样的 url base_url()

您应该使用FCPATH指向您的 codeigniter 应用程序基目录的常量。这是您应该分配给路径的内容(取决于图像文件在应用程序目录中的位置):

<?php $path = FCPATH . "htdocs/images/" . $product[0]['product_id'] . "_";?> 

但由于某种原因,如果你真的需要使用base_url(). 您可以使用get_headers()which 检查关联数组中 url 返回的标头,并在失败时检查 false。从返回的标头中,您可以确定图像 url 是否有效。更多关于 get_headers()

希望能帮助到你。

干杯,

阿迪

于 2013-04-02T17:09:25.777 回答
1

文件存在需要目录路径而不是 URL,URL 将始终返回 false。

    <?php 
    for($i=1; $i < 7; $i++):
    {
    $img = $path . $i . ".jpg";
    $url=getimagesize($img);
    if(!is_array($url))
    {
    ?>
    <div class="single">
            <a href="<?php echo base_url();?>images/<?php echo $product[0]['product_id'];?>_<?php echo $i; ?>.jpg" rel="lightbox[productimage]">
                  <img src="<?php echo base_url();?>images/<?php echo $product[0]['product_id'];?>_<?php echo $i; ?>.jpg" style="width:100px; height:100px;"/>
                </a>
            </div>
    <?php
    }
    }
    ?>

请注意,这有点慢,但它确实适用于服务器上的 URL。

于 2013-04-02T21:38:43.320 回答