PHP、thinkPHP5.0ウェブサイトのファイル管理機能を開発する(一)ファイルを表示する
4820 ワード
ファイルを表示する関数は次のとおりです.
1、urlencode($str):URL文字列を符号化し、文字列を符号化し、URLの要求部分に使用するのに便利である
2、urldecode($str):符号化されたURL文字列を復号し、復号後の文字列を返す
3、iconv('GB 2312','UTF-8',$str):文字列$str、符号化をGB 2312からutf-8に変換する.中国語の文字化けしを解決する
4、file_exists($path):ファイルまたはディレクトリが存在するかどうかを確認し、$pathはチェックするパスを規定します.
5、stripos($str,$find,$start):$findを検索し、文字列に最初に現れた場所でfalseを返す場所が見つからなかった
6、chdir(directory):directoryは新しい現在のディレクトリを規定する
7、getcwd():現在のディレクトリを取得する
8、opendir($path):ファイルを開き、$pathが開くディレクトリパス
9、readdir(dir_handle):関数はディレクトリ内の次のファイルのファイル名(フォルダ内のファイル名など)を返し、dir_handle、オプション、opendir()が開いていたディレクトリハンドルリソースを指定
10、filesize($filename):指定したファイルのサイズを返します
11、filectime($filename):指定したファイルの作成時間を返す
12、filemtime($filename):指定したファイルの最終変更時間を返す
13、array_column($arr,$column_key):$column_keyは、返さなければならない列であり、インデックス配列の整数インデックスであってもよいし、関連配列の列の文字列キー値であってもよいし、nullであってもよい.PHPバージョンは5.5+
14、array_Multisort($arr,sorting order,sorting type):関数はソート配列を返し、sorting orderはソート順を規定する(SORT_ASC昇順【A-Z】,SORT_DESC降順【Z-A】)
15、is_dir():指定したファイルがディレクトリであるかどうかを確認します.
public function index($currdir=null){
//中国語ファイルの文字化けし
$currdir = urldecode($currdir);
$currdir = iconv('UTF-8','GB2312',$currdir);
if($currdir){
//ディレクトリが存在するかどうかを判断する
if(file_exists($currdir)){
//表示権限、最大権限はプロジェクトルート
if(stripos($currdir,ROOT_PATH) === 0 && stripos($currdir,ROOT_PATH,'..') === false){
chdir($currdir);//$Currdirは、新しい現在のディレクトリを指定します(サブディレクトリ、親ディレクトリの表示などのディレクトリを開きます).
}
}
}
$rootdir = getcwd();//現在のパスの取得
$dir = opendir($rootdir);//ファイルを開く
$data = [];
$num['dir'] = 0;
$num['file'] = 0;
//ファイルのループ読み込み
while($filename = readdir($dir)){
if($filename!='.'&&$filename!='..')
if(is_dir($filename)){
$arr['icon'] = '#icon-mulu';//出力ディレクトリアイコン
$arr['flag'] = 1;//タグがディレクトリかどうか
$num['dir']++;//レコードディレクトリの数
}else{
$arr['icon'] = '#icon-wenjian';//出力ファイルアイコン
$arr['flag'] = 1;//ファイルかどうかを判断する
$num['file']++;//レコードファイルの数
}
$arr['currdir'] = iconv('GB2312','UTF-8',getcwd().'\\'.$filename);
$arr['name'] = $filename;//ファイル名
$arr['size'] = filesize($filename);//ファイルサイズ
$arr['ctime'] = filectime($filename);//ファイル作成時間
$arr['mtime'] = filemtime($filename);//ファイル最終変更時間
$data[] = $arr;
}
}
//ファイルとフォルダのソート
array_multisort(array_column($data,'flag'),SORT_DESC,$data);
$this->assign('dirs',$data);
return view();
}
HTMLテンプレート
転載先:https://www.cnblogs.com/YAN-HUA/p/9047549.html
1、urlencode($str):URL文字列を符号化し、文字列を符号化し、URLの要求部分に使用するのに便利である
2、urldecode($str):符号化されたURL文字列を復号し、復号後の文字列を返す
3、iconv('GB 2312','UTF-8',$str):文字列$str、符号化をGB 2312からutf-8に変換する.中国語の文字化けしを解決する
4、file_exists($path):ファイルまたはディレクトリが存在するかどうかを確認し、$pathはチェックするパスを規定します.
5、stripos($str,$find,$start):$findを検索し、文字列に最初に現れた場所でfalseを返す場所が見つからなかった
6、chdir(directory):directoryは新しい現在のディレクトリを規定する
7、getcwd():現在のディレクトリを取得する
8、opendir($path):ファイルを開き、$pathが開くディレクトリパス
9、readdir(dir_handle):関数はディレクトリ内の次のファイルのファイル名(フォルダ内のファイル名など)を返し、dir_handle、オプション、opendir()が開いていたディレクトリハンドルリソースを指定
10、filesize($filename):指定したファイルのサイズを返します
11、filectime($filename):指定したファイルの作成時間を返す
12、filemtime($filename):指定したファイルの最終変更時間を返す
13、array_column($arr,$column_key):$column_keyは、返さなければならない列であり、インデックス配列の整数インデックスであってもよいし、関連配列の列の文字列キー値であってもよいし、nullであってもよい.PHPバージョンは5.5+
14、array_Multisort($arr,sorting order,sorting type):関数はソート配列を返し、sorting orderはソート順を規定する(SORT_ASC昇順【A-Z】,SORT_DESC降順【Z-A】)
15、is_dir():指定したファイルがディレクトリであるかどうかを確認します.
public function index($currdir=null){
//中国語ファイルの文字化けし
$currdir = urldecode($currdir);
$currdir = iconv('UTF-8','GB2312',$currdir);
if($currdir){
//ディレクトリが存在するかどうかを判断する
if(file_exists($currdir)){
//表示権限、最大権限はプロジェクトルート
if(stripos($currdir,ROOT_PATH) === 0 && stripos($currdir,ROOT_PATH,'..') === false){
chdir($currdir);//$Currdirは、新しい現在のディレクトリを指定します(サブディレクトリ、親ディレクトリの表示などのディレクトリを開きます).
}
}
}
$rootdir = getcwd();//現在のパスの取得
$dir = opendir($rootdir);//ファイルを開く
$data = [];
$num['dir'] = 0;
$num['file'] = 0;
//ファイルのループ読み込み
while($filename = readdir($dir)){
if($filename!='.'&&$filename!='..')
if(is_dir($filename)){
$arr['icon'] = '#icon-mulu';//出力ディレクトリアイコン
$arr['flag'] = 1;//タグがディレクトリかどうか
$num['dir']++;//レコードディレクトリの数
}else{
$arr['icon'] = '#icon-wenjian';//出力ファイルアイコン
$arr['flag'] = 1;//ファイルかどうかを判断する
$num['file']++;//レコードファイルの数
}
$arr['currdir'] = iconv('GB2312','UTF-8',getcwd().'\\'.$filename);
$arr['name'] = $filename;//ファイル名
$arr['size'] = filesize($filename);//ファイルサイズ
$arr['ctime'] = filectime($filename);//ファイル作成時間
$arr['mtime'] = filemtime($filename);//ファイル最終変更時間
$data[] = $arr;
}
}
//ファイルとフォルダのソート
array_multisort(array_column($data,'flag'),SORT_DESC,$data);
$this->assign('dirs',$data);
return view();
}
/**
* (B、KB、MB、TB)
*/
function size_format($size = 0, $num = 0)
{
$unit = ['B', 'KB', 'MB', 'TB'];
$i = 0;
while ($size > 1024) {
$size /= 1024;//$size = $size/1024
$i++;
}
return round($size, $num) . $unit[$i];//round()
}
HTMLテンプレート
{volist name="dirs" id="v"}
転載先:https://www.cnblogs.com/YAN-HUA/p/9047549.html