Получить указать папку каталога - PullRequest
0 голосов
/ 10 марта 2020

Я использую php и html для создания формы в блокноте ++, я хочу создать исходную папку, но она не будет указывать папку каталога, в которой находится импортируемый файл. Я использую браузер Google Chrome, чтобы показать мой вывод. Я искал много способов решить эту проблему в inte rnet, они сказали, что по соображениям безопасности браузеры не разрешают эту функцию. Я также прочитал этот вопрос Как получить полный путь к выбранному файлу при изменении используя javascript, jquery - ajax? , но это не может работать для меня. Любой может дать мне совет, используя метод, который позволит мне успешно указать папку, в которой находится импортируемый файл. Нужно ли менять другой язык программирования, чтобы решить эту проблему?

Клиенту нужен вывод, как показано ниже, красная стрелка означает, что я не могу показать, укажите папку каталога, в которой находится файл для импорта, который находится во «входе». ":

Output 1

Теперь я использую ниже код для создания:

    <div class="col-lg-12">
                <div class="col-lg-3 label-bg"><label>Source Folder</label></div>
                <div class="col-lg-7"><input type="text" id="source" name="source" style="width:100%"></input></div>
                <div class="col-lg-2"><input type="file" id="source" onchange ="get_file_path();" webkitdirectory mozdirectory /></div>
            </div>

Мой вывод показывает как на картинке ниже: Output2 Output 3

Надеюсь, кто-нибудь может мне помочь решить эту проблему, потому что эта проблема уже застряла на 1 неделе. Спасибо.

1 Ответ

0 голосов
/ 06 апреля 2020

Сегодня я создал метод, который ищет указанный c файл или папку, вам просто нужно определить, откуда он будет начинаться.

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

Если файл или папка имеют то же имя и расширение, что и некоторый контент в просматриваемых папках, он вернет вас путь к нему.

function containsPhpFile($fileName, $dir = './src/php')
{
    $result = -1;
    $scan = scandir($dir);
    foreach ($scan as $main_file) {
        if ($result != -1) continue;
        if (in_array($main_file, array(".", ".."))) continue;
        $main_path = "$dir/$main_file";
        $sub_path = "";
        $sub_path_opened = array();
        if (is_dir($main_path)) {
            $scan_subpath = scandir($main_path);
            back: foreach ($scan_subpath as $sub_file) {
                if ($result != -1) continue;
                if (in_array($sub_path_opened, array($sub_path))) continue;
                if (in_array($sub_file, array(".", ".."))) continue;
                if (is_dir("$main_path/$sub_file")) {
                    $sub_path = "$main_path/$sub_file";
                    $_resultCompare = compareFile($fileName, $sub_path);
                    if ($_resultCompare[0] !== -1 && $_resultCompare[0] !== 1) {
                        $sub_path = "$sub_path/$_resultCompare[1]";
                        $scan_subpath = scandir($sub_path);
                        goto back;
                    };
                    array_push($sub_path_opened, $sub_path);
                    $sub_path = str_replace("/$sub_file", "", $sub_path);
                    if ($_resultCompare[0] === 1) $result = $_resultCompare[1];
                } elseif (is_dir("$sub_path/$sub_file")) {
                    $sub_path = "$sub_path/$sub_file";
                    $_resultCompare = compareFile($fileName, $sub_path);

                    if ($_resultCompare[0] !== -1 && $_resultCompare[0] !== 1) {
                        $sub_path = "$sub_path/$_resultCompare[1]";
                        $scan_subpath = scandir($sub_path);
                        goto back;
                    };
                    array_push($sub_path_opened, $sub_path);
                    $sub_path = str_replace("/$sub_file", "", $sub_path);
                    if ($_resultCompare[0] === 1) $result = 1;
                } else {
                    if ("$sub_path/$sub_file" == "$sub_path/$fileName") $result = "$main_path/$fileName";
                }
            }
        } else {
            if ("$main_path/$main_file" == "$main_path/$fileName") $result = "$main_path/$fileName";
        }
    }
    return $result;
}

function compareFile($file, $path): array
{
    $scan = scandir($path);
    $result = array(0 => -1);
    foreach ($scan as $_file) {
        if ($result[0] != -1) continue;
        if (in_array($_file, array(".", ".."))) continue;
        if (is_file("$path/$_file")) {
            if ("$path/$_file" == "$path/$file") $result = array(0 => 1, 1 => "$path/$file");
        } else $result = array(0 => 0, 1 => "$file");;
    }
    return $result;
}

Проверьте его и посмотрите, работает ли он! o /
Pastebin code
Вывод текста (эхо) просто для облегчения отладки.

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