CodeIgniter看不到图像(使用file_exists)

时间:2012-06-19 12:16:25

标签: php mysql codeigniter

我正在学习CodeIgniter。我有一个带有图像的目录img(路径/img/)。我试图通过CI视图访问它并检查是否存在此代码:

    $av = '../../../img/content/users/'.$userID.'.jpg';
    if(file_exists($av)) {
        $avatar = $av;
    } else {
    $avatar = 'img/content/users/none.jpg';
    }

有趣的是,回应<img src="'.$av.'">有效。我该怎么办?

4 个答案:

答案 0 :(得分:3)

CI始终在index.php上运行,因此路径始终是相对的。

假设index.php/img在根目录中处于同一级别,请尝试以下操作:

$av = 'img/content/users/'.$userID.'.jpg';
if(is_file($av)) { // or better yet, make sure it's really an image
    $avatar = $av;
} else {
    $avatar = 'img/content/users/none.jpg';
}
  

有趣的是,回应<img src="'.$av.'">作品

这是因为浏览器正在寻找与服务器不同的地方。我建议不要使用../../relative/paths,而是使用base_url()img()等功能。当URL中有其他段时,相对路径会中断。

答案 1 :(得分:2)

网址和文件路径不一样。从当前URL ../../../img/content/users可能并且可能与视图文件所在的硬盘上的文件路径完全不同。

答案 2 :(得分:1)

使用以下步骤

1)在配置文件(/ application / config /)中创建自定义配置文件名site_config.php并粘贴以下代码

<?php

$config['base_url'] = "http://".$_SERVER['SERVER_NAME'] . str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

if(!defined('DOCUMENT_ROOT')) define('DOCUMENT_ROOT',str_replace('system/application/config','',substr(__FILE__, 0, strrpos(__FILE__, '/'))));

$config['base_path']    =   constant("DOCUMENT_ROOT");
?>

2)编辑autoload.php以自动加载site_config.php(/application/config/autoload.php)

$autoload['config'] = array('site_config');

3)然后使用以下代码查看图像

$image_path = $this->config->item('base_path').'folder_name/'.$userID.'.jpg';
if(file_exists($image_path)) {
  $avatar = $this->config->item('base_url').'folder_name/'.$userID.'.jpg';
} else {
  $avatar = $this->config->item('base_url').'default_folder_name/profile.jpg';
}
echo '<img src="'.$avatar.'" />';

我认为它会对你有所帮助

答案 3 :(得分:0)

试试这个:

$av = './img/content/users/'.$userID.'.jpg';