複数パスのディレクトリを作成する
複数パスのディレクトリを作成を作成したくて作成。作成したいディレクトリのパスはCSVファイルに記載。 ●test.csv
vagrant/test2/haro/komika,vagrant/test2/nanika/yosi,vagrant/test2/haro/midori,vagrant/natu/haro/komika
●index.php
<!DOCTYPE html> <html> <head> <title>ディレクトリ作成</title> </head> <body> <form action="createpath.php" method="post" enctype='multipart/form-data'> <input type="file" name="getcsv" size="30"> <input type="submit" value="アップロード"> </form> </body> </html>
●createpath.php
<?php //---------------------------- // ファイル読み込み //---------------------------- if (is_uploaded_file($_FILES["getcsv"]["tmp_name"])) { $file_tmp_name = $_FILES["getcsv"]["tmp_name"]; $file_name = $_FILES["getcsv"]["name"]; // アップロードファイルの拡張子を判定 if (pathinfo($file_name, PATHINFO_EXTENSION) != 'csv') { echo 'CSVファイルのみ対応しています。'; exit(); } // CSVからデータ取得 $fp = fopen($file_tmp_name, "r"); $directory_paths = ''; while (($csv_data = fgetcsv($fp, ",")) !== FALSE) { $directory_paths = $csv_data; } } //---------------------------- // ディレクトリ作成 //---------------------------- foreach ($directory_paths as $k => $directory_path) { // ディレクトリ作成 $result = create_directroy($directory_path); } /* * ディレクトリ作成関数 * @param string directory_path */ function create_directroy($directory_path) { $directory_name = explode('/', $directory_path); $create_path = ''; foreach ($directory_name as $key => $value) { $create_path .= '/' . $value; if (!file_exists($create_path)) { mkdir($create_path); } } }
作成中に分かったのだけどmkdirメソッドの第三引数にtrueを設定すると、入れ子構造でディレクトリが作成できるようだ。。まあ、良い。次だ、次。
参考