Forum Moderators: open

Message Too Old, No Replies

How to Browse for Folders on Home Computer

HTML and ASP

         

RobinR

1:52 pm on Nov 6, 2005 (gmt 0)

10+ Year Member



This HTML will give you a browse button that allows you to select a file on your hard drive:
***********************************************
<INPUT TYPE="File" NAME="FileName" >
***********************************************
Is there something similar that will allow you to select a particular directory? For example, I may want to select a folder called projects rather than a file.

When I click search in Editplus, I get a browse button that allows me to select directories. Under ODBC Data Sources in my control panel, there is a button to select directories.

What programming is needed to get this type of browse capability?

Thanks,

Robin

Scally_Ally

3:36 pm on Nov 7, 2005 (gmt 0)

10+ Year Member



could you not make your own file browser instead of using the default one? you would then be able to see the address of the folder on the server and use it from there.

this one works pretty well.

'-------- default.asp PAGE-------
<html>
<head>
<title>TreeView</title>
<link rel=stylesheet href='treeview.css'></link>
</head>
</html>

<script language=javascript src='treeview.js'></script>
<!--#include file='treeviewFunctions.asp'-->

<%
set fso = CreateObject("Scripting.FileSystemObject")

vDir = "/claire_wood/"
root = Server.MapPath(vDir) & "\"
set fold = fso.getFolder(root)

' we'll assume that the starting point is not empty
' (has at least one subfolder or one file)

response.write getfoldlink("r0", "r0", fold, vDir)
if fold.subfolders.count > 0 then

' counter
r1c = 0

'loop through all subfolders in starting folder
for each f in fold.subfolders

' another counter
r1c = r1c + 1

' concatenate local/relative path once
sfoldname = root & f.name & "\"
fpath = vDir & f.name & "/"

set cfold = fso.getFolder(sfoldname)
if cfold.subfolders.count > 0 or cfold.files.count > 0 then

' we need to make the folder a tree node
response.Write getfoldlink("r1" & r1c, "r1", cfold, fpath)

' reset counter
r2c = 0

for each sf in cfold.subfolders

' keep track to identify nodes by id
r2c = r2c + 1

' concatenate local/relative path once
sfoldname = root & f.name & "\" & sf.name & "\"
path = vDir & f.name & "/" & sf.name & "/"

' build an identifier for this node
id = "r2" & r1c & "_" & r2c

set sfold = fso.getFolder(sfoldname)
if sfold.files.count > 0 then

' we need to make the folder a tree node
response.Write getfoldlink(id, "r2", sfold, path)
for each fil in sfold.files
response.write getfilelink("r2a", path, fil)
next
response.Write "</div>"
else

' this folder is not an expandable node
response.write getfoldlink("", "r2", sfold, path)
end if
next
for each fil in cfold.files

' show each file in this subfolder
response.write getfilelink("r1a", fpath, fil)
next
response.Write "</div>"
else

' this folder is not an expandable node
response.Write getfoldlink("", "r1", cfold, fpath)
end if
next
end if
for each fil in fold.files

' show the files in the starting folder
response.write getfilelink("r0a", vDir, fil)
next
response.Write "</div>"

set fso = nothing
%>

'-------- treeviewfunctions.asp --------
<%
function getfoldlink(d, c, f, p)
if d <> "" then

' needs to be clickable
getfoldlink = "<a href='#' style='cursor:hand' " & _
"onclick='flip(""" & d & """);" & _
"this.blur();return false;'>" & _
"<img id='i" & d & "' class=" & c & _
" src=plus.gif vspace=0 hspace=2 border=0>" & _
"<img src=folder.gif hspace=2 border=0></a>&nbsp;" & _
"<a target=_blank href=" & p & getsftitle(f) & _
">" & f.name & "</a></div><div id='" & d & "'" & _
" display=none style='display:none'>"
else

' can't be clickable
getfoldlink = "<div><img id='i" & d & "' " & _
"class=" & c & " src=plus.gif vspace=0 " & _
"hspace=2 visibility=hidden style='visibility:hidden'><img" & _
" src=folder.gif hspace=2>&nbsp;<a " & _
"target=_blank href=" & p & getsftitle(f) & _
">" & f.name & "</a></div>"
end if
end function

function getfilelink(c, fold, file)
getfilelink = "<div><img class=" & c & " src=file.gif" & _
" hspace=2>&nbsp;<a href=" & fold & file.name & _
getfiletitle(file) & ">" & file.name & "</a></div>"
end function

function getfiletitle(file)
getfiletitle = " title='Size: " & _
formatnumber(file.size/1024, 2, -1, 0, -1) & _
" kb" & vbCrLf & getDL(file) & "'"
end function

function getsftitle(fold)
getsftitle = " title='" & getsfc(fold) & _
vbCrLf & getfc(fold) & _
vbCrLf & getfs(fold) & _
vbCrLf & getDL(fold) & "'"
end function

function getDL(o)
d = o.dateLastModified
getDL = "Last mod: " & formatdatetime(d, 2) & _
" " & formatdatetime(d, 3)
end function

function getfc(fold)
getfc = fCount(fold.files.count)
end function

function getsfc(fold)
getsfc = sfCount(fold.subfolders.count)
end function

function getfs(fold)
getfs = "Size: " & bToMB(fold.size)
end function

function bToMB(b)
bToMB = formatnumber(b/1024/1024, 2, -1, 0, -1) & " MB"
end function

function fCount(c)
fCount = formatnumber(c, 0, -1, 0, -1) & " file" & _
suffix(c)
end function

function sfCount(c)
sfCount = formatnumber(c, 0, -1, 0, -1) & _
" subfolder" & suffix(c)
end function

function suffix(c)
if c <> 1 then suffix = "s"
end function
%>

'---------treeview.js page-----------------
function flip(l)
{
if (document.getElementById)
{
var on = (document.getElementById(l).style.display == 'none')? 1 : 0;
document.getElementById(l).style.display = (on)? 'block' : 'none';
document.images['i'+l].src = (on)? 'minus.gif' : 'plus.gif';
}
}

'----------treeview.css
* { font-size: 12px; font-family:tahoma; color:black }

a { text-decoration:none;color:black }

a:hover { text-decoration:underline;color:blue }

DIV { padding:2px }

.r0 { margin-left: 10px }

.r0a { margin-left: 36px }

.r1 { margin-left: 20px }

.r1a { margin-left: 46px }

.r2 { margin-left: 30px }

.r2a { margin-left: 56px }

A bit long i know but it does work

RobinR

3:16 pm on Nov 8, 2005 (gmt 0)

10+ Year Member



Scally_Ally,

Thank you for trying. However, ultimately, the directory in your program is hard coded. This will not provide the type of browse button found in Editplus or the Control Panel.

Robin