如何只显示.mp4文件?

  • 本文关键字:文件 mp4 显示 php
  • 更新时间 :
  • 英文 :


专家们好!

我目前正在增强我的treeview项目,但我只显示某些文件类型。我想在我的树视图中只显示mp4类型的文件。代码如下:

(归功于Treeview的原始代码)

class TreeView
{
private $root;

public function __construct($path)
{
$this->root = $path;
}

public function getTree()
{
return $this->createStructure($this->root, true);
}

private function createStructure($directory, $root)
{
$structure = $root ? '<ul class="treeview">' : '<ul>';

$nodes = $this->getNodes($directory);

foreach ($nodes as $node) {

$path = $directory.'/'.$node;
if (is_dir($path) ) {
$structure .= '<li class="treeview-folder"><p>';
$structure .= '<details class="details-example"><summary><font size="5px">'.$node.'</font></summary>';
$structure .= self::createStructure($path, false);
$structure .= '</p></li>';
} else {
$path = str_replace($this->root.'/', null, $path);
$structure .= '<p><li class="treeview-file">';
$structure .= '<a href="movies/./'.$path.'"><font size="5px">'.$node.'</font></a>';
$structure .= '</li></p>';
}
}

return $structure.'</ul>';
}
private function getNodes($directory = null)
{
$folders = [];
$files = [];

$nodes = scandir($directory);
foreach ($nodes as $node) {
if (!$this->exclude($node)) {
if (is_dir($directory.'/'.$node)) {
$folders[] = $node;
} else {
$files[] = $node;
}
}
}

return array_merge($folders, $files);
}

private function exclude($filename)
{
return in_array($filename, ['.', '..', 'index.php', '.htaccess', '.DS_Store']);
}
}
$treeView = new TreeView('movies/');
echo $treeView->getTree();

您可以提供允许的文件扩展名的"whitelist"(在本实例中只有一个)作为上述类的第二个参数,并将任何发现的文件的扩展名与该白名单进行比较,从而控制返回哪些文件。

class TreeView {
private $root;
private $whitelist;

public function __construct($path, $whitelist=array() ){
$this->root = $path;
$this->whitelist=$whitelist;
}

public function getTree(){
return $this->createStructure($this->root, true);
}

private function createStructure($directory, $root){
$structure = $root ? '<ul class="treeview">' : '<ul>';

$nodes = $this->getNodes($directory);

foreach ($nodes as $node) {

$path = $directory.'/'.$node;
if (is_dir($path) ) {
$structure .= '<li class="treeview-folder"><p>';
$structure .= '<details class="details-example"><summary><font size="5px">'.$node.'</font></summary>';
$structure .= self::createStructure($path, false);
$structure .= '</p></li>';
} else {
$path = str_replace($this->root.'/', null, $path);
$structure .= '<li class="treeview-file"><p>';
$structure .= '<a href="movies/./'.$path.'"><font size="5px">'.$node.'</font></a>';
$structure .= '</p></li>';
}
}

return $structure.'</ul>';
}
private function getNodes($directory = null){
$folders = [];
$files = [];

$nodes = scandir($directory);
foreach ($nodes as $node) {
if (!$this->exclude($node)) {
if (is_dir($directory.'/'.$node)) {
$folders[] = $node;
} else {
# check the whitelist for the file extension
if( !empty( $this->whitelist ) ){
$ext=strtolower( pathinfo( $node, PATHINFO_EXTENSION ) );
if( in_array( $ext, $this->whitelist ) ) $files[] = $node;
}else{
$files[] = $node;
}
}
}
}
return array_merge($folders, $files);
}

private function exclude($filename){
return in_array($filename, ['.', '..', 'index.php', '.htaccess', '.DS_Store']);
}
}


$whitelist=array('mp4');
$treeView = new TreeView('movies/',$whitelist);
echo $treeView->getTree();

最新更新