PHP - Преобразуйте путь Файловой системы к URL

ls не разветвляется. Ветвления оболочки и должностные лица для выполнения любой команды, которая не встроена, и одна из команд, которые это может выполнить, являются ls.

ls использует opendir () и readdir () для продвижения через все файлы в каталог. Если требуется больше информации об одном из них, это называет статистику ().

27
задан jdphenix 20 March 2014 в 05:20
поделиться

4 ответа

Предположим, что это каталог / путь / к / root / каталог-документа / пользователь / файл , а адрес - site.com/user/file

Первая функция, которую я показываю, получит имя текущего файла относительно адреса World Wide Web.

$path = $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];

и приведет к:

site.com/user/file

Вторая функция удаляет заданный путь корня документа.

$path = str_replace($_SERVER['DOCUMENT_ROOT'], '', $path)

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

/user/file
8
ответ дан 28 November 2019 в 05:41
поделиться

Более точным способом (включая порт хоста) было бы чтобы использовать это

function path2url($file, $Protocol='http://') {
    return $Protocol.$_SERVER['HTTP_HOST'].str_replace($_SERVER['DOCUMENT_ROOT'], '', $file);
}
8
ответ дан 28 November 2019 в 05:41
поделиться

ИМХО такая автоматизация действительно подвержена ошибкам. Намного лучше использовать некоторые явные помощники по пути (например, один для загрузки, один для изображений пользователей и т.д.) или просто инкапсулировать, например, загруженный файл с классом.

// Some "pseudo code"
$file = UploadedFile::copy($_FILES['foo']);
$file->getPath(); // /var/www/example.org/uploads/foo.ext
$file->getUri();  // http://example.org/uploads/foo.ext
6
ответ дан 28 November 2019 в 05:41
поделиться

Бесстыдное воровство форматирования Генри ...

  • быстрее и точнее проверять явное логическое значение, а не подразумеваемое; используйте вместо
  • , не используйте eval (), de () или iif () ... никогда. всегда есть способ обойти эти медленные функции
  • , понимающие структуры, ключи, значения и способы доступа к данным запроса и структуры с использованием нотации массива. (обычно это позволяет обойтись без оценки ())
  • не используйте знаки решетки, если вы не выводите данные или иным образом не создаете строку (не делайте этого: myFunction (arg = # myVar #))
  • прочтите и поймите разницу между ЭТОЙ и ПЕРЕМЕННОЙ областью видимости в CFC
  • , избегайте чрезмерного использования , когда вам, вероятно, потребуется использовать непосредственно перед началом вывода (до doctype, объявления xml или )
  • не бросайте вслепую значения ColdFusion в блок сценария HTML (javascript) без использования jsStringFormat ()
  • , если вы не используете < CDATA> текста в вашем XML, вы можете использовать xmlFormat () при создании XML-документа
  • не используйте реестр Windows для данных области клиента. Используйте базу данных.
  • если это позволяет ваша ИТ-архитектура, используйте данные сеанса вместо данных клиента.
  • используйте правильно и последовательно; общие данные будут утечкой в ​​вашем приложении.
  • если вы собираетесь использовать объекты Java, обратите внимание на сообщения об ошибках Java (например, «метод не найден» может не означать, что метод не существует в все, это означает, что метод не существует для аргументов, которые вы ' ve прилагается)
  • , если вам нужно читать большие файлы, либо используйте новые функции CF8 «File», либо передайте задачу Java на CF6 & 7. неэффективен для больших файлов.
  • поймите pass- по ссылке и передаче по значению, и как эти концепции работают в CF; особенно при использовании функций для изменения XML-документов
  • , как заявил Генри, всегда используйте ; также убедитесь, что вы используете правильный параметр CFSQLType для вашей СУБД (для даты, времени, отметки времени и т. д.)
  • не связывайте вместе последовательность логических блоков и , используйте и < cfcase> если у вас более трех условий, вам нужно обработать
  • больше замечаний по архитектуре:

    $image_file = 'myphoto.jpg';
    
    $file = PATH_IMAGES_FS.$image_file;
    //-- stores: /var/www/example.com/uploads/myphoto.jpg
    
    print PATH_IMAGES_WEB.$image_file;
    //-- prints: uploads/myphoto.jpg
    
  • 3
    ответ дан 28 November 2019 в 05:41
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: