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

时间:2018-01-25 20:43:02

标签: php codeigniter file-upload relative-path absolute-path

我一直在使用Codeigniter进行项目,我使用了很多库,包括File Uploading Class库。我知道如何上传和设置$config数组以便上传。

我遇到的是codeigniter文件上传保存文件路径的方式,当我使用$config['full_path']时,它会保存我的机器在数据库中的绝对路径。我将upload_path的值设置为'uploads/documents',并在数据库中将其保存为path/to/xampp/path/to/project/uploads/documents,但我只想要从应用程序的根目录开始的路径,以便我可以在{{1}中访问它就像我现在使用它时一样,它显示为href

2 个答案:

答案 0 :(得分:1)

我刚看到我误解了你的问题,但这也是FCPATH的工作。只需使用它来替换以获得相对路径:

var_dump(str_replace(FCPATH, '', $upload_path));

这是环保的,可以在多台机器上使用。

我无法测试我的代码,因为我现在正在使用我的手机,但可以随时询问有关我的解决方案的其他问题

在该行下方的原始答案,也许它可以保护某个时间,并且它有关于名称constans的更多信息:

为该作业使用CodeIgniter给定常量。

FCPATH链接到index.php所在的同一目录,APPPATH链接到您的Application文件夹。

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

这是一个例子:

$config['upload_path'] = FCPATH . 'uploads/documents';
$this->load->library('upload', $config);

在我的情况下,我会指出:/var/www/myapp/uploads/documents

请注意,如果您不自动加载上传库,则此方法仅适用。如果您确实在上传类文档中检查了initialize方法。

https://www.codeigniter.com/userguide3/libraries/file_uploading.html#setting-preferences

我在移动设备上看不到亚麻布,但两个常量都在index.php中定义,应该值得一看,以便了解它们包含的内容:

https://github.com/bcit-ci/CodeIgniter/blob/develop/index.php

答案 1 :(得分:1)

constants.php中的/config我将ROOT定义为:

define('ROOT', realpath($_SERVER['DOCUMENT_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 . '/uploads/'

即可