我有一个用于编辑.txt文件的应用程序。该应用程序由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>';
}
}
}
这是用于显示指定文件夹中文件列表的代码。 任何人都可以给我一些指示我如何实现这一目标?任何帮助将不胜感激。
答案 0 :(得分:3)
示例:强>
foreach (new DirectoryIterator('PATH/') as $fileInfo) {
if($fileInfo->isDot()) continue;
echo $fileInfo->getFilename() . "<br>\n";
}
如果您不想放置文件名,可以将读取文件放入db assign id中,并使用带有id param的链接。另一种解决方案是将文件存储在会话数组中并为它们分配密钥。当你想获得一个文件时,你只需要提供密钥而不是整个文件名和路径。
$ _ 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']
}