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();
}
 
/**
* (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"}





{$v.name|iconv='GB2312','UTF-8',###}

{$v.flag?" ":size_format($v.size,1)}

{$p|getpics=###,40}
{$v.ctime|date="Y-m-d",###}
{$v.mtime|date="Y-m-d",###}


       |

      {eq name="v.flag" value="0"}
       |
      {/eq}
      
{eq name="v.flag" value="0"}
|ダウンロード
{/eq}

      



{/volist}

 
転載先:https://www.cnblogs.com/YAN-HUA/p/9047549.html