2 qqlindexi qqlindexi 于 2014.12.09 22:32 提问

php如何获取文件夹里所有avi文件

我想要用php实现一个网页获取一个文件夹 E:\avi里所有后缀是avi和pdf文件的路径,然后把超链接放到网页。
文件夹avi可能是在二级或更高的路径,就是可能E:\avi\1.avi E:\1\x\1.avi 我需要
名字.avi路径用相对路径

6个回答

save4me
save4me   Ds   Rxr 2014.12.18 11:34
已采纳

<?php
$path = ".";
$ext = ".css";

function get_filetree($path, $ext)
{
$tree = array();
$temp = glob($path . "/*" . $ext);
if($temp) $tree = array_merge($tree, $temp);
foreach (glob($path . "/*", GLOB_ONLYDIR) as $dir) {
$temp = get_filetree($dir, $ext);
if($temp) $tree = array_merge($tree, $temp);
}

return $tree;
}

//print_r(get_filetree($path, $ext));
$list = get_filetree($path, $ext);
foreach($list as $item) {
echo "".$file = basename($item)."
";
}

save4me
save4me 超链接的路径就是get_filetree函数返回的路径,直接使用就可以了, 显示的部分使用了basename($item),只取文件的名字,不含路径和后缀。我上面的代码是测试用的,后缀是.css,你改成.avi就可以了。
接近 3 年之前 回复
qqlindexi
qqlindexi <!doctype html> <html> <head> <meta charset="GB2312"> <title>java</title> <link href="/intranet/css/gong.css" rel="stylesheet" type="text/css"> </head> <body> <?php $path = "."; $ext = ".avi"; function get_filetree($path, $ext) { $tree = array(); $temp = glob($path . "/*" . $ext); if($temp) $tree = array_merge($tree, $temp); foreach (glob($path . "/*", GLOB_ONLYDIR) as $dir) { $temp = get_filetree($dir, $ext); if($temp) $tree = array_merge($tree, $temp); } return $tree; }
接近 3 年之前 回复
qqlindexi
qqlindexi $list = get_filetree($path, $ext); foreach($list as $item) { $fd=substr($item, 1); echo "<a href=\"/php视频教程".$fd.'">'; echo "".$file = basename($item)."</a>"; echo "<br/>"; } ?> </body>
接近 3 年之前 回复
qqlindexi
qqlindexi 大神,那个超链接路径怎么弄?
接近 3 年之前 回复
save4me
save4me   Ds   Rxr 2014.12.10 09:46

参考使用PHP遍历文件夹与子目录的函数代码

$path = '..';
$ext = '.avi';

function get_filetree($path, $ext){
$tree = array();
foreach(glob($path.'/*'.$ext) as $single){
if(is_dir($single)){
$tree = array_merge($tree,get_filetree($single));
}
else{
$tree[] = $single;
}
}
return $tree;
}

print_r(get_filetree($path));


qqlindexi
qqlindexi 回复save4me: 不行
接近 3 年之前 回复
save4me
save4me 调用的时候应该是:print_r(get_filetree($path, $ext));,因为我修改了参考链接的代码,添加了文件扩展名这个参数。
接近 3 年之前 回复
qqlindexi
qqlindexi 出现了:Warning: Missing argument 2 for get_filetree(), called in D:\php\php.php on line 18 and defined in D:\php\php.php on line 5 Notice: Undefined variable: ext in D:\php\php.php on line 7
接近 3 年之前 回复
qqlindexi
qqlindexi 出现了:
接近 3 年之前 回复
save4me
save4me   Ds   Rxr 2014.12.12 21:51

下面的代码,测试过了,可以返回指定类型的文件,如果需要,可以修改路径和后缀名。

<?php
$path = '.';
$ext = '.avi';

function get_filetree($path, $ext){
$tree = array();
$temp = glob($path.'/*'.$ext);

if(!!$temp) $tree += $temp;

foreach(glob($path.'/*', GLOB_ONLYDIR) as $single){
    $temp = get_filetree($single, $ext);
    if(!!$temp) $tree += $temp;
}

return $tree;

}

print_r(get_filetree($path, $ext));


qqlindexi
qqlindexi 网页:Array ( [0] => ./1-10/php入门/php入门.avi [1] => ./11-20/Java SE 第十八讲 多态剖析.avi [2] => ./11-20/php回顾.avi [3] => ./11-20/php 多态详解.avi [4] => ./11-20/方法重载剖析.avi [5] => ./11-20/php回顾 续.avi [6] => ./11-20/php面向对象详解.avi [7] => ./11-20/方法参数传递详解.avi [8] => ./11-20/ ),我那文件夹有上百avi,显示只是一些,我要全部
接近 3 年之前 回复
save4me
save4me   Ds   Rxr 2014.12.13 21:02

<?php
$path = ".";
$ext = ".avi";

function get_filetree($path, $ext)
{
$tree = array();
$temp = glob($path . "/*" . $ext);
if($temp) $tree = array_merge($tree, $temp);

foreach (glob($path . "/*", GLOB_ONLYDIR) as $dir) {
    $temp = get_filetree($dir, $ext);
    if($temp) $tree = array_merge($tree, $temp);
}

return $tree;

}

print_r(get_filetree($path, $ext));

save4me
save4me   Ds   Rxr 2014.12.18 09:51

我上面最后一次回答的代码是否可以获取你目录下的所有avi文件了?我在网站服务器上测试获取css类型的文件是可以的。
上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!

save4me
save4me 回答了代码,看这样是否满足你的需求
接近 3 年之前 回复
qqlindexi
qqlindexi 能输出超链接不?我很小白的,就直接跑你源码,想有输出文件名然后点是超链接<a href="">文件名</a>
接近 3 年之前 回复
qqlindexi
qqlindexi   2014.12.18 12:38

根据多位大神结果
php获取同文件夹内:php视频的所有avi格式视频

 <!doctype html>
<html>
<head>
<meta charset="GB2312">
<title>java</title>
<link href="/intranet/css/gong.css" rel="stylesheet" type="text/css">
</head>

<body>
<?php
$path = ".";
$ext = ".avi";

function get_filetree($path, $ext)
{
$tree = array();
$temp = glob($path . "/*" . $ext);
if($temp) $tree = array_merge($tree, $temp);
foreach (glob($path . "/*", GLOB_ONLYDIR) as $dir) {
$temp = get_filetree($dir, $ext);
if($temp) $tree = array_merge($tree, $temp);
}

return $tree;
}

$list = get_filetree($path, $ext);
foreach($list as $item) {
$fd=substr($item, 1);
echo "<a href=\"/php视频教程".$fd.'">';
echo "".$file = basename($item)."</a>";
echo "<br/>";
}
?>
</body>

输出文件名

Csdn user default icon
上传中...
上传图片
插入图片