0

我正在学习 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

4 回答 4

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 中有其他段时,相对路径会中断。

于 2012-06-19T12:19:46.820 回答
2

URL 和文件路径不相同。从当前 URL../../../img/content/users可能和很可能与视图文件所在的硬盘上的文件路径完全不同。

于 2012-06-19T12:21:12.120 回答
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.'" />';

我想它会帮助你

于 2012-06-19T12:44:35.657 回答
0

试试这个:

$av = './img/content/users/'.$userID.'.jpg';
于 2012-06-19T12:20:37.053 回答