2

特定のディレクトリで異なるファイル拡張子を取得するにはどうすればよいですか? 「downloads /」という名前のフォルダーがあり、そのフォルダー内にPDF、JPEG、DOCファイルなどのさまざまな種類のファイルがあるとします。したがって、私のPHPコードでは、それらのファイルを取得して、ファイル名とファイル拡張子とともにリストしたいと考えました. 例: "downloads/" フォルダー内には異なるファイルがあります

downloads/

 - My Poem.doc
 - My Photographs.jpg
 - My Research.pdf

そのため、ファイル名、ファイル拡張子、およびファイルディレクトリを取得できるファイルを表示したかったのです。したがって、ビューでは次のようになります

Title: My Poem
Type: Document
Link: [url here] 

Title: My Photographs
Type: Image
Link: [url here] 

Title: My Research
Type: PDF
Link: [url here] 

誰でもphpでそれを行う方法を知っていますか? どうもありがとう!

4

3 に答える 3

3

とてもシンプルです。正直に言うと、php.net で検索しなかった理由がわかりません。彼らはこれについてたくさんの例を得ました。ここでチェックイン:クリック

例:

<?php

  function process_dir($dir,$recursive = FALSE) {
    if (is_dir($dir)) {
      for ($list = array(),$handle = opendir($dir); (FALSE !== ($file = readdir($handle)));) {
        if (($file != '.' && $file != '..') && (file_exists($path = $dir.'/'.$file))) {
          if (is_dir($path) && ($recursive)) {
            $list = array_merge($list, process_dir($path, TRUE));
          } else {
            $entry = array('filename' => $file, 'dirpath' => $dir);

 //---------------------------------------------------------//
 //                     - SECTION 1 -                       //
 //          Actions to be performed on ALL ITEMS           //
 //-----------------    Begin Editable    ------------------//

  $entry['modtime'] = filemtime($path);

 //-----------------     End Editable     ------------------//
            do if (!is_dir($path)) {
 //---------------------------------------------------------//
 //                     - SECTION 2 -                       //
 //         Actions to be performed on FILES ONLY           //
 //-----------------    Begin Editable    ------------------//

  $entry['size'] = filesize($path);
  if (strstr(pathinfo($path,PATHINFO_BASENAME),'log')) {
    if (!$entry['handle'] = fopen($path,r)) $entry['handle'] = "FAIL";
  }

 //-----------------     End Editable     ------------------//
              break;
            } else {
 //---------------------------------------------------------//
 //                     - SECTION 3 -                       //
 //       Actions to be performed on DIRECTORIES ONLY       //
 //-----------------    Begin Editable    ------------------//

 //-----------------     End Editable     ------------------//
              break;
            } while (FALSE);
            $list[] = $entry;
          }
        }
      }
      closedir($handle);
      return $list;
    } else return FALSE;
  }

  $result = process_dir('C:/webserver/Apache2/httpdocs/processdir',TRUE);

 // Output each opened file and then close
  foreach ($result as $file) {
    if (is_resource($file['handle'])) {
        echo "\n\nFILE (" . $file['dirpath'].'/'.$file['filename'] . "):\n\n" . fread($file['handle'], filesize($file['dirpath'].'/'.$file['filename']));
        fclose($file['handle']);
    }
  }

?>
于 2012-07-30T09:56:30.273 に答える
0

glob&を使用できますpathinfo

<?php
foreach (glob(__DIR__.'/*') as $filename) {
    print_r(pathinfo($filename));
}
?>
于 2012-07-30T09:55:17.810 に答える
0

このコードを試します:

$Name = array();
$ext = array();
$downloadlink = array();
$dir = 'downloads'
while ($file= readdir($dir))
{

    if ($file!= "." && $file!= "..")
    {
         $temp = explode(".",$file);
         if (count($temp) > 1) 
            {
                $Name[count($Name)] = $temp[0];
                swich($ext)
                {
                    case "doc" :
                    {
                        $ext[count($ext)] = "Document"; 
                        break;
                    }
                    [...]
                    default :
                    {
                        $ext[count($ext)] = "Error"; 
                        break;
                    }
                }
                $downloadlink[count($downloadlink)] = "http://yourdomain.com/".$dir."/".$file;
            }
    }
}
closedir($dir);

for($aux = 0; $aux < count($Name); $aux++)
{
    echo "Name = " . $Name[$aux]."<br />
    Type = " . $ext[$aux]."<br/>
    Link = " . $downloadlink[$aux]."<br/>
    ";
}
于 2012-07-30T10:03:42.423 に答える