2 qqlindexi qqlindexi 于 2014.12.12 16:31 提问

php获取文件夹内所有文件
php

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

5个回答

qqlindexi
qqlindexi   2014.12.18 12:55
已采纳

根据多位大神,php获取服务器文件夹所有文件源码

 <!doctype html>
<html>
<head>
<meta charset="GB2312">
<title>php</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>

显示
php介绍.avi
php基础.avi

chinmo
chinmo   Rxr 2014.12.12 16:50

这个获取客户端的不行的,

如果是你站内的可以这样:

function my_scandir($dir)

{

$files = array();

if ( $handle = opendir($dir) ) {

while ( ($file = readdir($handle)) !== false )

{

if ( $file != ".." && $file != "." )

{

if ( is_dir($dir . "/" . $file) )

{

$files[$file] = my_scandir($dir . "/" . $file);

}

else

{ if(fileSuffix($file) =='avi' or fileSuffix($file) =='pdf' ){
$files[] =$dir . "/" . $file;

}
}

}

}

closedir($handle);

return $files;

}

}

function fileSuffix($filename){

return strtolower(trim(substr(strrchr($filename, '.'), 1)));

}

上面这个就是遍历某文件夹以及子文件夹文件并且保存在一个数组里的

qqlindexi
qqlindexi 数组的不是文件夹和子文件夹的文件,而是文件夹里的文件
大约 3 年之前 回复
chinmo
chinmo   Rxr 2014.12.12 17:03

```function my_scandir($dir){
$files = array();
if( $handle = opendir($dir) ) {
while( ($file = readdir($handle)) !== false ){
if( $file != ".." && $file != "." ){
if( is_dir($dir . "/" . $file) ){
$files[$file] = my_scandir($dir . "/" . $file);
}
else{
if(fileSuffix($file) =='avi' or fileSuffix($file) =='pdf' ){
$files[] =$dir . "/" . $file;
}
}
}
}
closedir($handle);
return $files;
}
}
function fileSuffix($filename){
return strtolower(trim(substr(strrchr($filename, '.'), 1)));
}


chinmo
chinmo   Rxr 2014.12.12 17:04
 function my_scandir($dir){
    $files = array();
    if( $handle = opendir($dir) ) {
        while( ($file = readdir($handle)) !== false ){
            if( $file != ".." && $file != "." ){
                if( is_dir($dir . "/" . $file) ){
                    $files[$file] = my_scandir($dir . "/" . $file);
                }
                else{ 
                    if(fileSuffix($file) =='avi' or fileSuffix($file) =='pdf' ){
                        $files[] =$dir . "/" . $file;
                    }
                }
            }
        }
        closedir($handle);
        return $files;
    }
}
function fileSuffix($filename){
    return strtolower(trim(substr(strrchr($filename, '.'), 1)));
}
qqlindexi
qqlindexi 大神,不知道怎么用。能写出个可以用的不。就是帮输出<a herf="相对路径">文件名</a>
大约 3 年之前 回复
chinmo
chinmo 总算好看点了,这编辑器让人郁闷
大约 3 年之前 回复
aajunge
aajunge   2014.12.12 16:54

php 遍历文件夹下的所有文件及文件夹
/**

  • 遍历目录
  • @param string $dir 绝对/相对路径
  • @param string $filter 默认*返回所有文件及文件夹,*.php仅返回php文件,如果$patten为GLOB_BRACE可实现多文件筛选,如*.{php,html},返回php和html文件
  • @param const $patten 默认GLOB_BRACE,可选:GLOB_ONLYDIR,更多参数请参考手册
  • @param string/bool $nocache 防止本次调用的结果缓存上次的结果,如果一个脚本仅调用一次本函数,则不用管,否则得设个值
  • @return array / function globdir($dir, $filter = '', $patten = GLOB_BRACE, $nocache = null) { static $file_arr = array (); isset($nocache) && $file_arr = array (); if (!is_dir($dir)) return; if ($patten == GLOB_ONLYDIR) { $code = 'if (is_dir($file)) {$file_arr[] = $file;globdir($file, "*", GLOB_ONLYDIR);}'; } else { $code = 'is_file($file) ? $file_arr[] = $file : globdir($file,"' . $filter . '",' . $patten . ');'; } array_walk(glob("{$dir}/{$filter}", $patten), create_function('$file, $k, $file_arr', $code), &$file_arr); if ($filter != '*') { array_walk(glob("{$dir}/*", GLOB_ONLYDIR), create_function('$dir,$k,$param', 'list($filter, $patten) = explode("|", $param);globdir($dir, $filter, $patten);'), "{$filter}|{$patten}"); } return $file_arr; } /**
  • getDir()去文件夹列表,getFile()去对应文件夹下面的文件列表,二者的区别在于判断有没有“.”后缀的文件,其他都一样 */ //获取文件目录列表,该方法返回数组 function getDir($dir) { $dirArray[]=NULL; if (false != ($handle = opendir ( $dir ))) { $i=0; while ( false !== ($file = readdir ( $handle )) ) { //去掉"“.”、“..”以及带“.xxx”后缀的文件 if ($file != "." && $file != ".."&&!strpos($file,".")) { $dirArray[$i]=$file; $i++; } } //关闭句柄 closedir ( $handle ); } return $dirArray; } //获取文件列表 function getFile($dir) { $fileArray[]=NULL; if (false != ($handle = opendir ( $dir ))) { $i=0; while ( false !== ($file = readdir ( $handle )) ) { //去掉"“.”、“..”以及带“.xxx”后缀的文件 if ($file != "." && $file != ".."&&strpos($file,".")) { $fileArray[$i]="./imageroot/current/".$file; if($i==100){ break; } $i++; } } //关闭句柄 closedir ( $handle ); } return $fileArray; } //调用方法getDir("./dir")
qqlindexi
qqlindexi 一片空没有<a herf="相对路径">文件名</a>
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!