получить относительный путь в массиве конфигурации класса загрузки файла codeigniter

Я использовал Codeigniter для проекта, и я использовал довольно много библиотек, включая библиотеку File Uploading Class. Я знаю, как загрузить и настроить $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,

0

Решение

Я только что понял, что неправильно понял ваш вопрос, но это работа и для FCPATH. Просто используйте его для замены, чтобы получить относительный путь:

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

Это благоприятно для окружающей среды и будет работать на нескольких машинах.

Я не смог протестировать свой код, потому что сейчас я на своем мобильном телефоне, но не стесняйтесь задавать дополнительные вопросы относительно моего решения

Оригинальный ответ под этой строкой, возможно, он экономит время и содержит дополнительную информацию об именах констант:

Используйте CodeIgniter, заданные константы для этого задания.

FCPATH ссылки на тот же каталог, где находится ваш index.php и APPPATH ссылки на вашу папку приложений.

Это благоприятно для окружающей среды и сэкономит вам некоторую работу, если вы перенесете свой проект на другой сервер.

Вот пример:

$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

Другие решения

В 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/'

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector