我正在学习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.'">
有效。我该怎么办?
答案 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';