Jump to content

is_dir() and ch_dir(), oh my!


aezell

Recommended Posts

I am super rusty in PHP after teaching English for two years and I don't think I knew how to do this before. So, please help me learn and understand.

I need to take a directory like: $saveDir = "c:/home/www/temp/"
and then drill down through whatever directories *might* be in it until I get to a directory with *only* files.

I am certain that a directory will contain either 1) another directory or 2) files. The goal eventually is to get down to the files and then copy them to some other place, but drilling down through the possible directories and checking for new directories or files is where I am stumbling.

My pseudocode thinking is this:
[code]
foreach ($item) {
  if(is_dir($item)) {
    ch_dir($item);
} else {
    parse_dir($item); // <- not sure how to use this function
  }
}
[/code]

Something like that, but I honestly don't have much clue past that.

TIA!

This is where I am at now. The course_id and session_id are just used in the directory names, so overlook that for the moment.

[code]function digDirectory ($handleDir,$course_id,$session_id) {
    $permSaveDir = $this->config["htmlRootDir"]."/courses/".$course_id."/".$session_id;
    if ($handle = opendir($handleDir)) {
        while (false !== ($file = readdir($handle))) {
            if (!is_dir($file)) {
                rename($handleDir . "/" . $file,$permSaveDir . "/" $file);
            } else {
                $this->digDirectory($file,$course_id,$session_id);
            }
        }
        closedir($handle);
    }
    return true;
}[/code]
Link to comment
Share on other sites

  • 1 month later...
I think you are looking for a way to browse the local file system. One way I have done it in the past is something like this:

"<form action=\"saveoutput.php\" method=\"post\" enctype=\"multipart/form-data\">
    <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"5000000\">
    <table border=\"0\">
    <tr>
    <td><b>Please select directory and file name for output:</b></td>
    <td><input type=\"file\" name=\"savefile\"></td>   
    </tr>
    <tr></tr>
    <tr><td><input type=\"submit\" value=\"Save Output to kml format\"></td></tr>
    </table>
</form>";

The <input type="file" ...> wil create a button with the prompt 'Browse..' and that will let you browse the file system and pick a file.

Hope that helps!!

-Venki
Link to comment
Share on other sites

[code]<?php
header("Content-type: text/plain");

function parse_dir($dir)
{
if(substr($dir,-1) != '/')
{
$dir .= "/";
}

$contents = scandir($dir);
unset($contents[0]);
unset($contents[1]);
foreach($contents as $content)
{
echo "{$dir}{$content}\n";
if(is_dir($content))
{
parse_dir("{$dir}{$content}/");
}
}
}

parse_dir("/var/www/");
?>[/code]

You need recursion, this would do it.
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.