Php 获取codeigniter文件上载类配置数组中的相对路径

Php 获取codeigniter文件上载类配置数组中的相对路径,php,codeigniter,file-upload,relative-path,absolute-path,Php,Codeigniter,File Upload,Relative Path,Absolute Path,我在一个项目中使用了Codeigniter,我使用了很多库,包括文件上传类库。我知道如何上传和设置上传的$config数组 我陷入困境的是codeigniter file upload保存文件路径的方式,当我使用$config['full_path']时,它将我的机器的绝对路径保存在数据库中。我正在将upload\u path的值设置为'uploads/documents',并将其保存在数据库中,如path/to/xampp/path/to/project/uploads/documents,但

我在一个项目中使用了Codeigniter,我使用了很多库,包括文件上传类库。我知道如何上传和设置上传的
$config
数组


我陷入困境的是codeigniter file upload保存文件路径的方式,当我使用
$config['full_path']
时,它将我的机器的绝对路径保存在数据库中。我正在将
upload\u path
的值设置为
'uploads/documents'
,并将其保存在数据库中,如
path/to/xampp/path/to/project/uploads/documents
,但我只需要应用程序根目录下的路径,这样我就可以像现在一样在
href
中访问它,它像
localhost/project/path/to/xampp/path/to/project/uploads/documents
我刚才看到我误解了你的问题,但这也是FCPATH的工作。只需将其用于替换即可获得相对路径:

var_dump(str_replace(FCPATH, '', $upload_path));
这是一款环保型产品,可在多台机器上使用

我无法测试我的代码,因为我现在在手机上,但请随时询问有关我的解决方案的更多问题

在该行下方的原始答案,可能会保障某人的时间,并提供有关constans姓名的更多信息:

为该作业使用给定常数的CodeIgniter

FCPATH
链接到index.php所在的同一目录,并
APPPATH
链接到应用程序文件夹

这是环境友好的,如果您将项目移动到另一台服务器,它将为您节省一些工作

这里有一个例子:

$config['upload_path'] = FCPATH . 'uploads/documents';
$this->load->library('upload', $config);
在我的例子中,这将指向:
/var/www/myapp/uploads/documents

注意,只有在不自动加载上载库的情况下,这种方法才有效。如果确实选中了upload类文档中的initialize方法

我在手机上看不到行号,但这两个常量都在index.php中定义,值得一看,以便您了解它们包含的内容:


我刚才看到我误解了你的问题,但这也是FCPATH的工作。只需将其用于替换即可获得相对路径:

var_dump(str_replace(FCPATH, '', $upload_path));
这是一款环保型产品,可在多台机器上使用

我无法测试我的代码,因为我现在在手机上,但请随时询问有关我的解决方案的更多问题

在该行下方的原始答案,可能会保障某人的时间,并提供有关constans姓名的更多信息:

为该作业使用给定常数的CodeIgniter

FCPATH
链接到index.php所在的同一目录,并
APPPATH
链接到应用程序文件夹

这是环境友好的,如果您将项目移动到另一台服务器,它将为您节省一些工作

这里有一个例子:

$config['upload_path'] = FCPATH . 'uploads/documents';
$this->load->library('upload', $config);
在我的例子中,这将指向:
/var/www/myapp/uploads/documents

注意,只有在不自动加载上载库的情况下,这种方法才有效。如果确实选中了upload类文档中的initialize方法

我在手机上看不到行号,但这两个常量都在index.php中定义,值得一看,以便您了解它们包含的内容:


constants.php中在
/config中
我将
根定义为:

define('ROOT',realpath($\u SERVER['DOCUMENT\u ROOT'])
您可能可以使用
FCPATH
,我只是更喜欢使用我自己的路径,以防需要更改任何内容

然后,我在图像处理程序模型中使用此函数:

/**
 * Replaces ROOT in path with empty value
 * /var/www/images/this.jpg to /images/this.jpg when /var/www is ROOT
 * 
 * @param string $path
 * @return string Rel path
 */
public function get_rel_path($path) {
    return str_replace('\\', '/', str_replace(ROOT, '', $path));
}
并将
/images/this.jpg
保存在数据库中,这样每当我想显示图像时就不必调用此函数。如果需要检查文件是否存在,请使用
If(is_file(ROOT.$somefilefromdb)){}


对于上传和任何需要完整路径的内容,只需使用
ROOT即可/上传/'

constants.php
/config
我将
根目录定义为:

define('ROOT',realpath($\u SERVER['DOCUMENT\u ROOT'])
您可能可以使用
FCPATH
,我只是更喜欢使用我自己的路径,以防需要更改任何内容

然后,我在图像处理程序模型中使用此函数:

/**
 * Replaces ROOT in path with empty value
 * /var/www/images/this.jpg to /images/this.jpg when /var/www is ROOT
 * 
 * @param string $path
 * @return string Rel path
 */
public function get_rel_path($path) {
    return str_replace('\\', '/', str_replace(ROOT, '', $path));
}
并将
/images/this.jpg
保存在数据库中,这样每当我想显示图像时就不必调用此函数。如果需要检查文件是否存在,请使用
If(is_file(ROOT.$somefilefromdb)){}


对于上传和任何需要完整路径的内容,只需使用
ROOT即可/上传/'

感谢非常优雅的解决方案,但我认为广泛使用的框架(如CI)应该具有此功能,而不是默认设置。CodeIgniter的设计占用空间非常小,可以让您按照自己喜欢的方式做事,所以我可以接受。老实说,我已经为此定义了一个助手函数,所以我不必再考虑它了。感谢非常优雅的解决方案,但我认为广泛使用的框架(如CI)应该具有此功能,而不是默认功能。CodeIgniter ist的设计占用空间非常小,并允许您以自己喜欢的方式进行操作,所以我可以接受。老实说,我已经为此定义了一个helper函数,所以我不必再考虑它了。