Выбор файла для редактирования


У меня есть приложение, которое используется для редактирования файлов .txt. приложение состоит из 3 частей

  1. Отображает содержимое папки с файлами, подлежащими редактированию (каждый файл является ссылкой, при нажатии на которую он открывается в режиме редактирования).

  2. Запись в файл.

  3. Сохранение в файл.

Части 2 и 3 я завершил с помощью функций fopen и fwrite, что было не слишком сложно. часть, в которой мне нужна помощь, - это часть первая, в настоящее время я открываю файл с помощью ввод его местоположения и имени файла, например, в файле php, где у меня есть функция отображения и функция сохранения:

$relPath = 'file_to_edit.txt';
$fileHandle = fopen($relPath, 'r') or die("Failed to open file $relPath ! ");

Но я хочу, чтобы файл открывался в режиме редактирования при нажатии, а не каждый раз вводил имя файла.

$directory = 'folder_name';

if ($handle = opendir($directory. '/')){
    echo 'Lookong inside \''.$directory.'\'<br><br>';

        while ($file = readdir($handle)) {
        if($file !='.' && $file!='..'){
        echo '<a href="'.$directory.'/'.$file.'">'.$file.'<a><br>';

    }

    }

}

Это код, который ti использует для отображения списка файлов, находящихся в указанной папке. Кто-нибудь может дать мне несколько советов, как я могу этого добиться? любая помощь будет очень признательна.

Author: user2362103, 2013-05-21

1 answers

  1. Для получения содержимого файла используйте file_get_contents();
  2. Чтобы поместить содержимое файла, используйте file_put_contents(); с флагом FILE_APPEND для редактирования.
  3. Для получения списка файлов в каталоге вы можете использовать DirectoryIterator

Пример:

foreach (new DirectoryIterator('PATH/') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
}

Если вы не хотите указывать имена файлов, вы можете поместить прочитанные файлы после того, как они будут помещены в базу данных, назначить им идентификаторы и использовать ссылки с параметром id. Другое решение - хранить файлы в массиве сеансов и назначать ключи для них. Когда вы хотите получить файл, вам просто нужно указать ключ вместо полного имени файла и пути.

Пример с $_SESSION

$file_arr = array();
foreach (new DirectoryIterator('PATH/') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    $file_arr[] = array("path" => $fileInfo->getPathname(), 'name' => $fileInfo->getFilename());
}
$_SESSION['files'] = $file_arr;

Затем в представлении вы можете использовать

foreach($_SESSION['files'] as $k=>$file)
{
  echo "<a href='edit.php?f=".$k."'>'.$file['name'].'</a>";
}

И edit.php

$file = (int)$_GET['f'];

if(array_key_exits($file, $_SESSION['files'])
{
   $fileInfo = $_SESSION[$file'];

   //in file info you have now $fileInfo['path'] $fileInfo['name']
}
 3
Author: Robert, 2013-05-21 07:02:20