繁体   English   中英

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

[英]get relative path in codeigniter file upload class config array

我一直在使用Codeigniter进行项目,并且使用了很多库,包括文件上载类库。 我知道如何上传并设置用于上传的$config数组。

我受困的是codeigniter文件上传保存文件路径的方式,当我使用$config['full_path']时,它将我的机器的绝对路径保存在数据库中。 我将upload_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链接到Application文件夹。

这是环境友好的,如果将项目移到另一台Server,将为您节省一些工作。

这里是一个例子:

$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

/config constants.php中,我将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)) { }检查文件是否简单if(is_file(ROOT . $somefilefromdb)) { }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM