Извлечение путей к файлам из кода [duplicate]

Вы не можете делать это только с Javascript. Вам понадобится код на стороне сервера (PHP, в вашем случае), который служит прокси-сервером между БД и клиентским кодом.

1
задан jgr208 11 March 2015 в 15:52
поделиться

3 ответа

7
ответ дан anubhava 15 August 2018 в 16:41
поделиться

Единственным символом linux (и unix), который не разрешен в пути к файлу, является символ ascii nul \0 (он недопустим, поскольку он используется в качестве ограничителя строк --- в этом случае терминатор имени пути --- в открытом (2) системном вызове, поэтому вы можете иметь только один, в конце, не считая символом файла). Старые стили запретили группировку нескольких косичек /, поэтому правильное регулярное выражение будет (\/?[^\0/])+|\/ (последовательность необязательного символа косой черты, за которой следует не-нулевой символ и символ не слэш, или только запись / - указав корневой каталог), который позволяет использовать все символы, но ascii nul, и не допускает одновременного отображения двух слэшей. Недавние реализации позволяют группировать косые черты (сворачивая их в один), поэтому допустимый путь regexp будет [^\0]+.

Но это соответствует всем введенным вами данным (даже, он будет соответствовать всем входам как один путь к файлу, так как символы \n разрешены как часть имени файла), поэтому вам нужно быть более точным в своем вопросе, чтобы разоблачить то, что вы хотите, и то, что вы не хотите принимать. "foo.log was written" и "the file " (с этим конечным пространством) являются действительными именами файлов в linux (и в unix). как насчет других управляющих символов? Что относительно escape-последовательностей, символов wildcar (например * или ?) и т. Д.?

0
ответ дан 3 revs 15 August 2018 в 16:41
поделиться
  • 1
    Спасибо за отрицательные голоса, которым могли бы сделать, без всякого объяснения ... своего рода слишком конструктивный способ помочь людям. – Luis Colorado 17 March 2015 в 10:33
  • 2
    + 1'd. Понижающие голоса, вероятно, те же самые, которые делают ужасно опасные необоснованные предположения при написании программного обеспечения, что делает жизнь трудной для всех нас. – Luke A. Leber 9 October 2016 в 02:58

Для абсолютного пути к файлу:

^(\/[\w^ ]+)+\/?([\w.])+[^.]$

Для абсолютного пути к папке:

^(\/[\w^ ]+)+\/?$
0
ответ дан thollander 15 August 2018 в 16:41
поделиться
Другие вопросы по тегам:

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