Преобразование путей к файлам сервера в URL в Codeigniter - PullRequest
0 голосов
/ 29 июля 2011

Я разрабатываю свое первое приложение на Codeigniter 2.0.2, и у меня возникла небольшая проблема, о которой я не могу найти никакой информации в Интернете.

Приложение вращается вокруг ресурсов, хранящихся локально на сервере (а именно, изображений и аудиофайлов), которые должны быть доступны пользователю. Расположение этих ресурсов хранится в БД в виде абсолютных путей. В результате мне часто приходится переводить серверные пути в URL на основе base_url.

Я уже написал простую и достаточно надежную функцию, чтобы справиться с ней для меня, но со всеми внешне значимыми помощниками в CI (url, path) я не могу избавиться от ощущения, что я просто заново изобрел колесо.

По крайней мере, я бы подумал, что будет какая-то функция CI (скажем, "basify"), которая преобразует любой путь сервера в путь, относящийся к base_url, например:

$server_path = '/server/path/to/app/resources/image.jpg';
basify( $server_path );  // returns 'resources/image.jpg' or './resources/image.jpg'

где приложение CI находится в / server / path / to / app. Тогда это простой вызов base_url () для создания URL.

Существует ли что-нибудь подобное?

Edit: И да, я знаю, что простое preg_replace будет обрабатывать большинство случаев для меня (по крайней мере, те, где ресурс находится в базовом пути), но я чувствую, что это должна быть работа CI, а не моя! Половина причины, по которой я его использую, заключается в том, что я не хочу думать об управлении путями.

1 Ответ

0 голосов
/ 29 июля 2011

Может быть, вы можете использовать функцию php str_replace вместе с codeigniter FCPATH constant.
Ваш код будет:

function basify($image_path) {
    return str_replace(FCPATH, '', $image_path);
}

Константа FCPATH является новой для меня, но я провел несколько тестов, и она отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...