Working with a simple directory/file tree display solution (http://abeautifulsite.net/blog/2007/06/php-file-tree/)
I'm able to get the page to display properly, javascript works just fine as well, but I can't seem to get the correct file path on the file links.
here's the code: -
<?php
-
-
$allowed_extensions = array("doc", "pdf");
-
-
echo php_file_tree($_SERVER['DOCUMENT_ROOT']."/er_test/forms", "[link]", $allowed_extensions);
-
-
echo php_file_tree("/er_test/", "javascript:alert('You clicked on [link]');");
-
-
?>
-
The file link is coming out like this:
d:\Inetpub\noccaschool/er_test/forms/Student%20Forms/Student+Check-Out+Procedures.doc
I'm thinking that it could be something in how the website is structured, is there a work around or a manual way to set the path?
If needed here's the php_file_tree code: -
<?php
-
/*
-
-
== PHP FILE TREE ==
-
-
Let's call it...oh, say...version 1?
-
-
== AUTHOR ==
-
-
Cory S.N. LaViska
-
http://abeautifulsite.net/
-
-
== DOCUMENTATION ==
-
-
For documentation and updates, visit http://abeautifulsite.net/notebook.php?article=21
-
-
*/
-
-
-
function php_file_tree($directory, $return_link, $extensions = array()) {
-
// Generates a valid XHTML list of all directories, sub-directories, and files in $directory
-
// Remove trailing slash
-
if( substr($directory, -1) == "/" ) $directory = substr($directory, 0, strlen($directory) - 1);
-
$code .= php_file_tree_dir($directory, $return_link, $extensions);
-
return $code;
-
}
-
-
function php_file_tree_dir($directory, $return_link, $extensions = array(), $first_call = true) {
-
// Recursive function called by php_file_tree() to list directories/files
-
-
// Get and sort directories/files
-
if( function_exists("scandir") ) $file = scandir($directory); else $file = php4_scandir($directory);
-
natcasesort($file);
-
// Make directories first
-
$files = $dirs = array();
-
foreach($file as $this_file) {
-
if( is_dir("$directory/$this_file" ) ) $dirs[] = $this_file; else $files[] = $this_file;
-
}
-
$file = array_merge($dirs, $files);
-
-
// Filter unwanted extensions
-
if( !empty($extensions) ) {
-
foreach( array_keys($file) as $key ) {
-
if( !is_dir("$directory/$file[$key]") ) {
-
$ext = substr($file[$key], strrpos($file[$key], ".") + 1);
-
if( !in_array($ext, $extensions) ) unset($file[$key]);
-
}
-
}
-
}
-
-
if( count($file) > 2 ) { // Use 2 instead of 0 to account for . and .. "directories"
-
$php_file_tree = "<ul";
-
if( $first_call ) { $php_file_tree .= " class=\"php-file-tree\""; $first_call = false; }
-
$php_file_tree .= ">";
-
foreach( $file as $this_file ) {
-
if( $this_file != "." && $this_file != ".." ) {
-
if( is_dir("$directory/$this_file") ) {
-
// Directory
-
$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">" . htmlspecialchars($this_file) . "</a>";
-
$php_file_tree .= php_file_tree_dir("$directory/$this_file", $return_link ,$extensions, false);
-
$php_file_tree .= "</li>";
-
} else {
-
// File
-
// Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
-
$ext = "ext-" . substr($this_file, strrpos($this_file, ".") + 1);
-
$link = str_replace("[link]", "$directory/" . urlencode($this_file), $return_link);
-
$php_file_tree .= "<li class=\"pft-file " . strtolower($ext) . "\"><a href=\"$link\">" . htmlspecialchars($this_file) . "</a></li>";
-
}
-
}
-
}
-
$php_file_tree .= "</ul>";
-
}
-
return $php_file_tree;
-
}
-
-
// For PHP4 compatibility
-
function php4_scandir($dir) {
-
$dh = opendir($dir);
-
while( false !== ($filename = readdir($dh)) ) {
-
$files[] = $filename;
-
}
-
sort($files);
-
return($files);
-
}
-
Thanks,
Carlos
3 2428
To manually set the path is as simple as replacing: - $_SERVER['DOCUMENT_ROOT']."/er_test/forms
with:
I'm still not sure what exactly you want?
First of all, thanks for the reply.
The issue I'm having is that the link to download the files that are displayed through the file tree can't be downloaded because the url is malformed.
It shows up for example as: - d:\Inetpub\noccaschool/er_test/forms/form_name.pdf
instead of: - http://www.nocca.com/er_test/forms/form_name.pdf
Does that help?
Thanks
Hmmmm... I have never tried to do that but it seems simple.
When I use $_SERVER['DOCUMENT_ROOT'] I get: - /home/username/public_html/
However mine is remotely hosted, so I image that that is the difference.
$_SERVER['HTTP_HOST'] and $_SERVER['SERVER_NAME'] both return my domain name with the domain extension. What do those return on yours?
If on the small chance that they do return your domain, then you can use something like: - echo "http://".$_SERVER['SERVER_NAME']."/er_test/forms";
Sign in to post your reply or Sign up for a free account.
Similar topics
by: David Webb |
last post by:
The problem started when the Working Folder for a project was somehow set to
the folder of another project. I set the correct working folder in VSS and
deleted the .vbproj files that had been...
|
by: VK |
last post by:
On Windows platforms path separator "\" collides with the script escape
sign "\"
Obvious and old way to prevent it is to double backslashes: "\\"
But I'm curious if there is a reliable way to...
|
by: Mark |
last post by:
Hello all -
I'm at wits end with trying to figure out why I'm having this problem since I followed the research, that I've dug up, to a "T". I'm trying to display a JPEG image from a path...
|
by: Rob |
last post by:
Hope you can help me on this one. The scenario is this - i have
integrated VS.NET with VSS and am now trying to set-up an automated
build script which does the following:
1) Labels most recent...
|
by: darrel |
last post by:
I have an input type="file" field that I am using to accept a file upload.
This works, but I'm having problems with the filename property.
In firefox, this:
MyInputField.postedfile.filename
...
|
by: Vibhu |
last post by:
Hello All,
I have a input box on the HTML page with the type set to file. What I
want is that when the value changes in the file textbox, it should give
me the full file path. I have even tried...
|
by: Eric |
last post by:
Hello,
I have some server side includes on a Classic asp page that look
something like:
<!-- #include virtual="/includes/file1.asp"-->
<!-- #include virtual="/includes/file2.asp" -->
<!--...
|
by: Tawreq |
last post by:
Hi All,
I have quite a unique issue - I would be very grateful if someone
could help out with this challenge....
I have two columns, Column A contains and acronym, and Column B
contains a...
|
by: mpalomas |
last post by:
Hi C++ folks,
I have trouble to open files whose path contains non-ascii characters
with std::ifstream.
For instance let's say i just have a file which has Japanese
characters either in the...
|
by: Raheem |
last post by:
Hello,
I built a development version of a live website on my hosted account.
However the development version is having problems with finding
include files. After troubleshooting I was able to...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: ryjfgjl |
last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
| |