Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Write Folder Names to the site and connect

Status
Not open for further replies.

duckiebear

Programmer
May 25, 2004
32
0
0
US
I have an HTML page that I want to add a perl script or find some way to write the name of or connect to folders located in a specific directory onto the HTML page. Ideally, they would be links where users could click on them to open and access subfolders and files located within. Right now, I have manually included the file link and name, and when the user clicks the link it of course opens explorer to view the subfolders and files.

Basically, I'm looking for a way to automate the HTML front end for directories on a specific server. Can anyone help?
 
Post your current code. Your expalnation is confusing, maybe the code will help clarify what you are doing.

------------------------------------------
- Kevin, perl coder unexceptional! [wiggle]
 
If I am right in saying you are trying to navigate through your webservers tree of files using a simple system of links.

Although this code is very basic and would need further work (i.e. testing whether it be a file or a folder (files open in new window / folders open to view contents)), it could be a basis.

Code:
#! /usr/bin/perl
use strict;
use CGI ':standard';
use Cwd;
print "Content-type: text/html\n\n";

my $program_url = 'script.pl';
my $base_path = param('base_path');
my $opendir_path = getcwd.$base_path;

opendir(DIR,$opendir_path) || die "Open directory failed >>> $opendir_path >>> $!";
my @files = readdir(DIR);
closedir(DIR);

foreach(@files){
	print qq(<a href="$program_url?base_path=$base_path/$_">$_</a><br/>);
}

I hope this helps,

Chris
 
A quick follow-up:

I have used the example above to produce a complete working example.

Code:
[ol]
[li][gray]#! /usr/bin/perl[/gray][/li]
[li][url=http://perldoc.perl.org/functions/use.html][black][b]use[/b][/black][/url] [green]strict[/green][red];[/red][/li]
[li][black][b]use[/b][/black] [green]CGI[/green] [red]'[/red][purple]:standard[/purple][red]'[/red][red];[/red][/li]
[li][black][b]use[/b][/black] [green]Cwd[/green][red];[/red][/li]
[li][black][b]use[/b][/black] [green]File::Basename[/green][red];[/red][/li]
[li][url=http://perldoc.perl.org/functions/print.html][black][b]print[/b][/black][/url] [red]"[/red][purple]Content-type: text/html[purple][b]\n[/b][/purple][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red][/li]
[li][/li]
[li][black][b]print[/b][/black] [red]qq([/red][purple][/purple][/li]
[li][purple]<style type="text/css">[/purple][/li]
[li][purple]body,table,td{font-family:Arial;font-size:10pt;border:1px solid grey;}[/purple][/li]
[li][purple]tr.top_row td{text-align: center;font-weight: bold;}[/purple][/li]
[li][purple].base_path{width: 600px;}[/purple][/li]
[li][purple]</style>[/purple][/li]
[li][purple][/purple][red])[/red][red];[/red][/li]
[li][/li]
[li][url=http://perldoc.perl.org/functions/my.html][black][b]my[/b][/black][/url] [blue]$program_url[/blue] = [red]'[/red][purple]script.pl[/purple][red]'[/red][red];[/red][/li]
[li][black][b]my[/b][/black] [blue]$dir_url[/blue] = [red]'[/red][purple][URL unfurl="true"]http://www.domain.com[/URL][/purple][red]'[/red][red];[/red][/li]
[li][black][b]my[/b][/black] [blue]$base_path[/blue] = [maroon]param[/maroon][red]([/red][red]'[/red][purple]base_path[/purple][red]'[/red][red])[/red][red];[/red][/li]
[li][olive][b]if[/b][/olive][red]([/red][red]([/red][blue]$base_path[/blue] eq [red]"[/red][purple][/purple][red]"[/red][red])[/red] || [red]([/red][maroon]param[/maroon][red]([/red][red]'[/red][purple]action[/purple][red]'[/red][red])[/red] eq [red]'[/red][purple]tl[/purple][red]'[/red][red])[/red][red])[/red][red]{[/red] [blue]$base_path[/blue] = [red]'[/red][purple]/[/purple][red]'[/red][red];[/red] [red]}[/red][/li]
[li][olive][b]if[/b][/olive][red]([/red][maroon]param[/maroon][red]([/red][red]'[/red][purple]action[/purple][red]'[/red][red])[/red] eq [red]'[/red][purple]uol[/purple][red]'[/red][red])[/red][red]{[/red] [blue]$base_path[/blue]  = [maroon]dirname[/maroon][red]([/red][blue]$base_path[/blue][red])[/red][red];[/red] [red]}[/red][/li]
[li][blue]$base_path[/blue] = [maroon]rem_extra_slash[/maroon][red]([/red][blue]$base_path[/blue][red])[/red][red];[/red][/li]
[li][black][b]my[/b][/black] [blue]$dir_path[/blue] = getcwd.[blue]$base_path[/blue][red];[/red][/li]
[li][/li]
[li][url=http://perldoc.perl.org/functions/opendir.html][black][b]opendir[/b][/black][/url][red]([/red]DIR,[blue]$dir_path[/blue][red])[/red] || [url=http://perldoc.perl.org/functions/die.html][black][b]die[/b][/black][/url] [red]"[/red][purple]Open directory failed >>> [blue]$dir_path[/blue] >>> [blue]$![/blue][/purple][red]"[/red][red];[/red][/li]
[li][black][b]my[/b][/black] [blue]@files[/blue] = [url=http://perldoc.perl.org/functions/grep.html][black][b]grep[/b][/black][/url] [red]{[/red]![red]/[/red][purple]^[purple][b]\.[/b][/purple]{1,2}$[/purple][red]/[/red][red]}[/red] [url=http://perldoc.perl.org/functions/readdir.html][black][b]readdir[/b][/black][/url][red]([/red]DIR[red])[/red][red];[/red][/li]
[li][url=http://perldoc.perl.org/functions/closedir.html][black][b]closedir[/b][/black][/url][red]([/red]DIR[red])[/red][red];[/red][/li]
[li][/li]
[li][black][b]my[/b][/black] [red]([/red][blue]%hash[/blue][red])[/red][red];[/red][/li]
[li][olive][b]foreach[/b][/olive][red]([/red][blue]@files[/blue][red])[/red][red]{[/red][/li]
[li]	[olive][b]if[/b][/olive] [red]([/red][url=http://perldoc.perl.org/functions/-X.html][black][b]-d[/b][/black][/url] [red]"[/red][purple][blue]$dir_path[/blue]/[blue]$_[/blue][/purple][red]"[/red][red])[/red] [red]{[/red] [url=http://perldoc.perl.org/functions/push.html][black][b]push[/b][/black][/url][red]([/red][blue]@[/blue][red]{[/red][blue]$hash[/blue][red]{[/red][red]'[/red][purple]Dir[/purple][red]'[/red][red]}[/red][red]}[/red],[blue]$_[/blue][red])[/red][red];[/red] [red]}[/red][/li]
[li]	[olive][b]elsif[/b][/olive] [red]([/red][url=http://perldoc.perl.org/functions/-X.html][black][b]-f[/b][/black][/url] [red]"[/red][purple][blue]$dir_path[/blue]/[blue]$_[/blue][/purple][red]"[/red][red])[/red] [red]{[/red] [black][b]push[/b][/black][red]([/red][blue]@[/blue][red]{[/red][blue]$hash[/blue][red]{[/red][red]'[/red][purple]File[/purple][red]'[/red][red]}[/red][red]}[/red],[blue]$_[/blue][red])[/red][red];[/red] [red]}[/red][/li]
[li][red]}[/red][/li]
[li][/li]
[li][black][b]print[/b][/black] [red]qq([/red][purple]<p><input class="base_path" type="text" name="p" value="$base_path" /><br/><a href="$dir_url$base_path" target="_blank">$dir_url$base_path</a></p>[/purple][red])[/red][red];[/red][/li]
[li][black][b]print[/b][/black] [red]qq([/red][purple]<p>| <a href="$program_url?base_path=$base_path&action=tl">Top Level</a> | <a href="$program_url?base_path=$base_path&action=uol">Up One Level</a> |</p>[/purple][red])[/red][red];[/red][/li]
[li][/li]
[li][black][b]my[/b][/black][red]([/red][blue]$dir_count[/blue],[blue]$file_count[/blue][red])[/red] = [red]([/red][fuchsia]0[/fuchsia],[fuchsia]0[/fuchsia][red])[/red][red];[/red][/li]
[li][black][b]print[/b][/black] [red]qq([/red][purple]<table>[/purple][red])[/red][red];[/red][/li]
[li][black][b]print[/b][/black] [red]qq([/red][purple]<tr class="top_row"><td>Type:</td><td>Name:</td><td>Ext:</td></tr>[/purple][red])[/red][red];[/red][/li]
[li][olive][b]foreach[/b][/olive] [black][b]my[/b][/black] [blue]$type[/blue][red]([/red][url=http://perldoc.perl.org/functions/sort.html][black][b]sort[/b][/black][/url] [url=http://perldoc.perl.org/functions/keys.html][black][b]keys[/b][/black][/url] [blue]%hash[/blue][red])[/red][red]{[/red][/li]
[li]	[olive][b]foreach[/b][/olive] [black][b]my[/b][/black] [blue]$name[/blue][red]([/red][black][b]sort[/b][/black] [maroon]case_sort[/maroon][red]([/red][blue]@[/blue][red]{[/red][blue]$hash[/blue][red]{[/red][blue]$type[/blue][red]}[/red][red]}[/red][red])[/red][red])[/red][red]{[/red][/li]
[li]		[olive][b]if[/b][/olive][red]([/red][blue]$type[/blue] eq [red]'[/red][purple]Dir[/purple][red]'[/red][red])[/red][red]{[/red][/li]
[li]			[black][b]my[/b][/black] [blue]$dir[/blue] = [maroon]rem_extra_slash[/maroon][red]([/red][red]"[/red][purple][blue]$program_url[/blue]?base_path=[blue]$base_path[/blue]/[blue]$name[/blue][/purple][red]"[/red][red])[/red][red];[/red][/li]
[li]			[black][b]print[/b][/black] [red]qq([/red][purple]<tr><td>$type</td><td><a href="$dir"><b>$name</b></a></td><td>-</td></tr>[/purple][red])[/red][red];[/red][/li]
[li]			[blue]$dir_count[/blue]++[red];[/red][/li]
[li]		[red]}[/red][/li]
[li]		[olive][b]elsif[/b][/olive][red]([/red][blue]$type[/blue] eq [red]'[/red][purple]File[/purple][red]'[/red][red])[/red][red]{[/red][/li]
[li]			[blue]$name[/blue] =~ [red]/[/red][purple]^(.*)([purple][b]\.[/b][/purple])([^.]*)$[/purple][red]/[/red][red];[/red][/li]
[li]			[black][b]my[/b][/black] [blue]$file[/blue] = [maroon]rem_extra_slash[/maroon][red]([/red][red]"[/red][purple][blue]$dir_url[/blue][blue]$base_path[/blue]/[blue]$name[/blue][/purple][red]"[/red][red])[/red][red];[/red][/li]
[li]			[black][b]print[/b][/black] [red]qq([/red][purple]<tr><td>$type</td><td><a href="$file" target="_blank">$name</a></td><td>$3</td></tr>[/purple][red])[/red][red];[/red][/li]
[li]			[blue]$file_count[/blue]++[red];[/red][/li]
[li]		[red]}[/red][/li]
[li]	[red]}[/red][/li]
[li][red]}[/red][/li]
[li][black][b]print[/b][/black] [red]qq([/red][purple]</table>[/purple][red])[/red][red];[/red][/li]
[li][black][b]print[/b][/black] [red]"[/red][purple]<p>><b>Directories...</b> [blue]$dir_count[/blue]< --- ><b>Files...</b> [blue]$file_count[/blue]<</p>[/purple][red]"[/red][red];[/red][/li]
[li][/li]
[li][url=http://perldoc.perl.org/functions/sub.html][black][b]sub[/b][/black][/url] [maroon]rem_extra_slash[/maroon][red]{[/red][/li]
[li]	[blue]$_[/blue][red][[/red][fuchsia]0[/fuchsia][red]][/red] =~ [red]s/[/red][purple][purple][b]\/[/b][/purple]+[/purple][red]/[/red][purple][purple][b]\/[/b][/purple][/purple][red]/[/red][red]g[/red][red];[/red][/li]
[li]	[blue]$_[/blue][red][[/red][fuchsia]0[/fuchsia][red]][/red] =~ [red]s/[/red][purple]^(http:[purple][b]\/[/b][/purple])[/purple][red]/[/red][purple][blue]$1[/blue][purple][b]\/[/b][/purple][/purple][red]/[/red][red];[/red][/li]
[li]	[url=http://perldoc.perl.org/functions/return.html][black][b]return[/b][/black][/url] [blue]$_[/blue][red][[/red][fuchsia]0[/fuchsia][red]][/red][red];[/red][/li]
[li][red]}[/red][/li]
[li][/li]
[li][black][b]sub[/b][/black] [maroon]case_sort[/maroon][red]{[/red][/li]
[li]	[url=http://perldoc.perl.org/functions/lc.html][black][b]lc[/b][/black][/url][red]([/red][blue]$a[/blue][red])[/red] cmp [black][b]lc[/b][/black][red]([/red][blue]$b[/blue][red])[/red][red];[/red][/li]
[li][red]}[/red][/li]
[/ol]
[tt]------------------------------------------------------------
Pragmas (perl 5.10.0) used :
[ul]
[li]strict - Perl pragma to restrict unsafe constructs[/li]
[/ul]
Core (perl 5.10.0) Modules used :
[ul]
[li]CGI - Simple Common Gateway Interface Class[/li]
[li]Cwd - get pathname of current working directory[/li]
[li]File::Basename - Parse file paths into directory, filename and suffix.[/li]
[/ul]
[/tt]

Chris
 
If ur using Apache, u can simply palce the root folder under public_html and every thing under that will become accessible.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top