我想要显示图像。用户最多可以添加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张图片正在显示。关于如何修复它的任何想法都会很棒。感谢
答案 0 :(得分:4)
函数file_exists
接受文件路径作为参数,而不是像你现在使用的那样的url,即CodeIgniter的base_url()
。
您应该使用指向codeigniter应用程序基本目录的FCPATH
常量。
这是您应该分配给您的路径(取决于您的图像文件在应用程序目录中的位置):
<?php $path = FCPATH . "htdocs/images/" . $product[0]['product_id'] . "_";?>
但出于某种原因,如果真的需要使用base_url()
。您可以使用get_headers()
检查关联数组中url返回的标头,失败时检查false。从返回的标头中,您可以确定图像URL是否有效。 More about get_headers()
希望它有所帮助。
干杯,
阿迪
答案 1 :(得分: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一起使用。