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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
php 读取文件夹下所有图片、文件
$hostdir=dirname(__FILE__).'/data/upload/admin/20170517/'; //要读取的文件夹$url = '/data/upload/admin/20170517/'; //图片所存在的目录$filesnames = scandir($hostdir); //得到所有的文件// print_r($filesnames);exit; //获取也就是扫描文件
php拿到目录下的所有文件并且保存到数组
函数如下function get_dirs($dir_path) { $res = array(); $res_lists = array(); foreach(glob("$dir_path/*") as $item) { if(is_dir($item)) { $folder = end(explode('/', $item));
读取指定文件夹里面的所有图片取出里面其中一张图片和判断文件夹或文件是否存在
读取指定文件夹里面的所有图片取出里面其中一张图片 $file='图片路径地址'; $filesnames = scandir($file); $img_list=$filesnames[mt_rand(3,count($filesnames)-1)];//随机一个数组里面的其中一个文件名 $img_top=$img_list;//随机图片 判断文件夹或文件是否存在 if
PHP获取文件夹的图片以及分页
[php] view plain copy "width: 90%; margin: 10px auto; border: 1px solid #ccc; text-align: center">                  $page=isset($_GET['page'])?$_GET['page']:0;//从零开始          $img
PHP实现当前文件夹下所有文件和文件夹的遍历
php function myScandir($dir){ static $flag='';  //设置缩进显示格式 $files = scandir($dir);//读取当前文件夹的文件 $flag.="--";   //每层文件夹比上层文件夹缩进两格- foreach ($files as $file) { if ($file=='.'||$file=='..') c
利用Python扫描一个目录下所有的视频文件
#利用Python扫描一个目录下所有的视频文件 def search_data(path,vido_ext):import os num_data = 0 os.chdir(path) for i in os.listdir(os.curdir): ext = os.path.splitext(i)[1] if ext in vi
获取文件夹下所有的文件数量
/**     * 文件夹下所有的文件数量     * @param [type] $url [文件链接]     */    function shuLiang($url){//造一个方法,给一个参数        $sl=0;//造一个变量,让他默认值为0;        $arr = glob($url);//把该路径下所有的文件存到一个数组里面;        foreach ($arr ...
JS如何遍历一个文件夹下的所有文件与目录
function searchFiles(){    var fso = new ActiveXObject("Scripting.FileSystemObject");    var f = fso.GetFolder(document.all.fixfolder.value);    var fc = new Enumerator(f.files);    var s = "";    for
asp.net取文件夹中所有文件名
要对文件进行操作首先要做的就是导入一个名字空间,代码:using System.IO;第一种方法:    string[] files = Directory.GetFiles(MapPath("proimg/img/"));    先声明了一个字符数组,mapPath方法得到的是一个绝对路径。    因为GetFiles返回的是一个string[]数组,所以用 files来接收它。 
如何收集文件夹中所有文件的名称
需求:整理一大堆表格资料,要将文件夹中所有文件的名称全部整理出来放在一个文档里面; 方法:通过批处理实现; 1.在文件夹里面创建一个bat文件; 2.bat文件内容写上 DIR *.*  /B >LIST.TXT (注:LIST.TXT可以自己创建名称) 3.双击运行bat文件,文件夹会自动生成LIST.TXT文件,里面就包含了该文件夹下的所有文件名称。