CodeIgniter 看不到图像(使用 file_exists)


CodeIgniter doesn't see images (using file_exists)

我正在学习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.'">作品。我该怎么办?

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

URL

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

使用以下步骤

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) 编辑自动加载.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.'" />';

我想它会帮助你

试试这个:

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