使用分页查看目录中的文件-php
我想在浏览器中显示我的目录中的文件。我知道这可以通过使用使用分页查看目录中的文件-php,php,pagination,Php,Pagination,我想在浏览器中显示我的目录中的文件。我知道这可以通过使用@opendir和readdir实现。。但是我想要的是将列表中的文件数量限制为特定的数量,然后使用分页显示。取决于您希望如何执行此操作。有很多javascript/jquery分页库。。只需谷歌“Javascript分页” 如果javascript不是一个选项,或者您更喜欢只使用php,那么它应该相对简单 使用opendir/readdir获取所有文件的列表。设置要显示的数量。将余数除以该数字即可得到页数。然后从(第1页)*(要列出的编号)
@opendir
和readdir
实现。。但是我想要的是将列表中的文件数量限制为特定的数量,然后使用分页显示。取决于您希望如何执行此操作。有很多javascript/jquery分页库。。只需谷歌“Javascript分页”
如果javascript不是一个选项,或者您更喜欢只使用php,那么它应该相对简单
使用opendir/readdir获取所有文件的列表。设置要显示的数量。将余数除以该数字即可得到页数。然后从(第1页)*(要列出的编号)到(要列出的编号)的数组中取一个切片。这些是您将显示的文件。通过get/post传递页码。如果太高,则使用最后一页,太低或非数字,使用第一页。对于分页,可以使用。
一旦您获得目录中的文件列表,您只需配置分页器,它将处理其余部分。您可以使用它将目录中的所有内容读取到一个数组中。然后根据分页值输出数组的内容
$offset = 10; //get this as input from the user, probably as a GET from a link
$quantity = 10; //number of items to display
$filelist = scandir('/mydir');
//get subset of file array
$selectedFiles = array_slice($filelist, $offset-1, $quantity);
//output appropriate items
foreach($selectedFiles as $file)
{
echo '<div class="file">'.$file.'</div>';
}
$offset=10//将其作为用户的输入获取,可能是从链接获取
$quantity=10//要显示的项目数
$filelist=scandir('/mydir');
//获取文件数组的子集
$selectedFiles=array\u slice($filelist、$offset-1、$quantity);
//输出适当的项目
foreach($selectedFiles作为$file)
{
回显“.$file.”;
}
也许是这样的
$page = 1;
$resultsPerPage = 10;
$files = array();
while(($obj = readdir($dir))) {
$files[] = $obj;
}
$limit = $page * $resultsPerPage;
($limit > count($files)) ? $limit = count($files) : $limit = $limit;
for($i = ($limit - $resultsPerPage); $i < $limit; $i++) {
echo($files[$i];
}
$page=1;
$resultsPerPage=10;
$files=array();
而($obj=readdir($dir))){
$files[]=$obj;
}
$limit=$page*$resultsPerPage;
($limit>计数($files))$limit=计数($files):$limit=$limit;
对于($i=($limit-$resultsPerPage);$i<$limit;$i++){
echo($files[$i];
}
然后让导航按钮修改页码。您应该尝试YUI 2分页,如果您想在表中显示文件,请使用datatable,yahoo用户界面中有一个非常有用的组件 问候语-- 和是我的新好朋友,虽然
glob
似乎更容易进行预过滤。你也可以编写一个自定义的。我认为需要PHP>5.1
无预过滤器:
$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
$dir_glob = $dir . '/*.{jpg,gif,png}';
$dir_iterator = new ArrayObject(glob($dir_glob, GLOB_BRACE));
$dir_iterator = $dir_iterator->getIterator();
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
foreach ($paginated as $file) { ... }
全局预过滤器:
$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
$dir_glob = $dir . '/*.{jpg,gif,png}';
$dir_iterator = new ArrayObject(glob($dir_glob, GLOB_BRACE));
$dir_iterator = $dir_iterator->getIterator();
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
foreach ($paginated as $file) { ... }
那么,做你该做的事:
$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
$dir_glob = $dir . '/*.{jpg,gif,png}';
$dir_iterator = new ArrayObject(glob($dir_glob, GLOB_BRACE));
$dir_iterator = $dir_iterator->getIterator();
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
foreach ($paginated as $file) { ... }
请注意,在
DirectoryIterator
示例中,$file
将是的一个实例,而glob
示例只是磁盘路径。我想要一个纯php解决方案..不是Java,否则我不在这里..:)我尝试了。。但是不行,我很高兴能帮上忙。我搞砸了什么?:)如果你觉得这个问题有用,请投票:)尝试此代码时,my$paginated为空。在$dir\u iteraor上运行打印返回。。。。ArrayIterator对象([storage:ArrayIterator:private]=>ArrayObject对象([storage:ArrayObject:private]=>ArrayObject(此处应为项目列表)。分页时的变量转储会发回对象(LimitIterator)#3(0){},打印时会产生LimitIterator对象().My$page和$perpage变量在边界内。不确定如果$dir_迭代器充满文件,为什么LimitIterator将不返回任何内容。使用php 5.3