Jump to content

Archived

This topic is now archived and is closed to further replies.

aezell

is_dir() and ch_dir(), oh my!

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]

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
Venki -- Seems to be looking for a way to browse the SERVER filesystem..

I am looking in to this one.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

×

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.